Windows 7開發:用戶帳戶管理數據重定向(寫入受保護的資源)

http://www.bianceng.cn/Programming/net/201104/26176.htm

您可能遇到過下面的一種或多種情況:

• 您的應用程序寫入Program Files ,Windows目錄,或者系統根(一般是C盤)文件夾,但是您在這些地方並沒有找到您的文件

• 您的應用程序寫入Windows註冊表,特別是HKLM/Software中,但是您沒有看 到註冊表進行了更新

• 您切換到了另一個帳戶,並且您的應用程序沒有辦法找 到已寫入Program Files,Windows目錄,或者系統根(一般是C盤)文件夾的文件,或者找到 了這些文件的老版本

• 在啓用或禁用用戶帳戶控制(UAC)後,您的應用程序都 沒有辦法找到Program Files或Windows目錄中的文件

如果這些出現在了您的應用程序 中,都是由於UAC虛擬化的原因。下面所提供的信息爲您介紹了所有關於發現這個應用程序兼 容性問題,解決方案,以及特殊兼容性問題的一些附加信息。

真正的問題:UAC 虛擬 化

在Windows Vista中,一般由管理員來運行應用程序。這樣,應用程序可以自由的 讀寫系統文件和註冊表的值。如果標準用戶可以運行這些應用程序,那他們可能會由於沒有 足夠的權限而導致失敗。Windows Vista通過重定向寫入(以及後續文件或者註冊表操作)對 應用戶的配置文件(profile)位置,來對標準用戶運行應用程序的能力進行了提升。

例如,如果一個應用程序試圖寫入C:\Program Files\Contoso\Settings.ini,並且用戶 沒有權限來對該文件夾進行寫入操作,寫入操作將會被重定向到C:\Users \Username\AppData\Local\VirtualStore\Program Files\Contoso\settings.ini。如果應用 程序試圖在註冊表中寫入HKEY_LOCAL_MACHINE\Software \Contoso\,這將會被自動重定向到 HKEY_CURRENT_USER\Software\Classes\VirtualStore \MACHINE\Software\Contoso或 HKEY_USERS\UserSID_Classes\VirtualStore \Machine\Software\Contoso。

下圖顯示了Windows 虛擬化進程的兩個組件:文件虛擬化和註冊表虛擬化

重要注意

當爲Windows Vista開發應用程序時,請確定在對應的requestedExecutionLevel元素 中嵌入應用程序清單文件。這將會關閉文件和註冊表虛擬化,減少虛擬化的文件和註冊表值 的複雜性。

更多關於UAC虛擬化和新UAC技術,請參閱“Windows Vista中的新 UAC技術”http://msdn.microsoft.com/en-us/library/bb756960.aspx .


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章