測試程序是一個 InstallShield 做的 Windows Installer 安裝程序,發布方式為單一 EXE,Menifest 中指定 requireAdministrator,在 Win7 標準用戶下雙擊執行,在彈出的 UAC 對話框中選擇一個管理員用戶。這種情況下,對于這個程序來說,HKEY_CURRENT_USER 為管理員用戶的數據,SH… 系列 API 的執行環境也是管理員用戶,如 SHGetFolderPath 取 AppData 目錄取到的是管理員用戶的 AppData 目錄。
但如果從控制面板=>添加刪除程序(程序和功能)里執行(相當于執行 msiexec /…),在過一會兒彈出的 UAC 對話框中選管理員用戶,此時 HKEY_CURRENT_USER 為管理員用戶的數據,但是 SH… 系列 API 的執行環境卻是標準用戶。查看兩個 MsiExec.exe 進程,其中一個是 System 用戶的,也就是 Windows Installer 服務對應的進程;另一個是管理員用戶的,但是用 Process Explorer 查看,它的所有環境路徑全是標準用戶的。
覺得有點奇怪,是以記之。^_^
posted on 2009-10-22 19:50
溪流 閱讀(748)
評論(0) 編輯 收藏 引用 所屬分類:
Windows