在我們的安裝包中,用戶(不一定是管理員)可以選擇爲當前用戶(CU)或所有用戶(AU)安裝我們的應用程序。當選擇CU時,自定義動作(即VB腳本)在HKCU註冊表中寫入某些內容。另一方面,當選擇AU(對於管理員)時,相同的腳本將相同的內容寫入HKLM。特權訪問點需要
這在WinXP及以下版本中都很好。但是對於Win7來說,這是由於UAC造成的一個問題 - 正如你所想象的那樣。用戶始終可以在EXE文件上執行右鍵單擊 - >以管理員的身份運行或暫時關閉UAC,但這不能滿足原來的要求,即普通用戶不需要提升即可運行安裝程序。
我已經試過的解決方法是設置需要管理員權限項目屬性爲是。但如上所述,這不適用於普通用戶。
有沒有辦法請求海拔點播?我在想,如果用戶選擇AU,那麼在執行安裝程序之前,我不會在雙擊程序時詢問高程。請參閱我在以下代碼段中的評論:
Sub AddRegistryKey(key, value)
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
If Session.Property("ALLUSERS") <> "1" Then
' Can I request for elevation at this point?
Session.Property("PathToRegistryKeys") = Session.Property("PathToRegistryKeysUser") ' HKCU
Else
Session.Property("PathToRegistryKeys") = Session.Property("PathToRegistryKeysAll") ' HKLM
End If
WshShell.RegWrite Session.Property("PathToRegistryKeys")&Session.Property("ProductCode")&"\"&key&"\", value, "REG_SZ"
End Sub
PS我一般不接受的答案,只是指向我一個鏈接,我可以,否則谷歌自己這 –
有時候有人解釋得很好,我自己也不能說得更好,這將是一個很好的理解強化練習,爲你提供一個回答你從那篇文章中學到的東西, d upvote它給你。 –