2012-03-27 79 views
1

我的安裝程序需要管理員權限。在安裝過程中,某些值會寫入當前登錄用戶的註冊表的HKCU樹中。但是,當此用戶帳戶是所謂的標準帳戶時,用戶必須在安裝程序啓動時指定管理員帳戶的憑據。然後將這些值寫入與此管理帳戶相關的HKCU樹,而不是當前登錄用戶的HKCU。 當安裝程序想要將一些數據寫入本地AppData並希望在桌面上創建快捷方式時,會出現同樣的問題。如何讓我的安裝程序寫入HKCU註冊表樹?

我如何繞過這個?

+0

你是說安裝程序需要「以管理員身份運行」,或者安裝程序本身提示輸入憑據,以便它可以模擬管理員? – ShiggityShiggityShwa 2012-03-27 22:31:06

+0

@ShiggityShiggityShwa當登錄用戶是標準Windows帳戶時,安裝程​​序會提示輸入憑據。當登錄用戶是管理員帳戶時,會出現UAC屏幕提示。 – Dabblernl 2012-03-28 05:42:11

+0

你需要管理員權限的人是誰? – Anders 2012-03-28 07:06:05

回答

1

如果您要求管理員權限,通常意味着您正在爲所有用戶進行系統/機器安裝。在創建這種類型的安裝程序時,寫入HKCU或%USERPROFILE%不是一個好主意,不僅僅因爲您最終可能會針對「錯誤的用戶」執行操作,而且您最終只會爲該用戶初始化安裝,不是所有的用戶。

我建議您將此常見數據寫入HKLM\Software\YourCompany\YourApp\CommonData和/或<CSIDL_COMMON_APPDATA|CSIDL_PROGRAM_FILES>\YourCompany\YourApp\CommonData,然後在用戶第一次運行它時將這些數據導入到應用程序中。

您可能還想考慮創建一個每用戶安裝程序(如Chrome),但這意味着您可以只有寫入HKCU和%USERPROFILE%!

2

發生這種情況是因爲您使用的是每個用戶位置(HKEY_CURRENT_USER)中寫入數據的每臺機器安裝。

正確的方法是僅使用每用戶位置的每用戶安裝或者僅使用每臺計算機位置(HKEY_LOCAL_MACHINE而不是HKEY_CURRENT_USER)的每機器安裝。

相關問題