2015-03-03 177 views
1

我試圖創建安裝程序時使用Inno安裝程序,當我遇到此問題,其他所有正在安裝,但註冊表項沒有安裝在當前用戶,我無法在HKEY_CURRENT_USER中找到它。但是當我嘗試以管理員身份運行Regedit時,註冊表安裝在那裏。我已經打開UAC並使用管理員帳戶進行驗證,以便安裝運行,爲什麼會發生這種情況?Inno Setup爲登錄用戶(不是管理員用戶)創建註冊表項

這裏是我的Registry部分

[Registry] 
Root: HKCU; Subkey:Software; Flags: uninsdeletekey; ValueName:ABS; ValueType:string; ValueData:ABS; 
Root: HKCU; Subkey:Software\Microsoft\Office\Word\Addins\ABS.ScriptManager; Flags: uninsdeletekey; 
Root: HKCU; Subkey:Software\Microsoft\Office\Word\Addins\ABS.ScriptManager; ValueName:Description; ValueType:string; ValueData:Script Manager; Flags: uninsdeletekey; 

注:我運行32位Windows 7

+0

因此,當您啓動安裝程序時,您登錄Windows的用戶不是管理員? – 2015-03-03 08:19:35

+0

是的,它不是管理員,但我需要將它安裝在用戶註冊表中,而不是在管理註冊表中。哦,順便說一句,第一個註冊表只是一個例子,讓我看看它是否真的在起作用。 – Shana 2015-03-05 06:39:41

回答

0

從你的問題的措辭,這聽起來像,這是因爲你是「用管理員帳戶驗證爲安裝運行。「如果是這種情況,並且您在UAC提示符處輸入了與您登錄的帳戶不同的帳戶,那麼當前用戶實際上將成爲剛剛在UAC提示符處輸入的管理員帳戶,而不是您記錄的帳戶與...一起。您可能需要做的是使用runasoriginaluser函數,該函數將使用登錄的用戶憑證,而不是您在UAC提示符處輸入的帳戶。

+0

我需要包含哪些內容? – Shana 2015-03-05 06:33:12

1

我不認爲你可以明確寫入Inno Setup登錄用戶的註冊表項。您只能寫入運行安裝程序的用戶的註冊表項。

您可以通過HKEY_USERS寫入任何(或全部)用戶的註冊表項,但我不知道,如果你能告訴,哪個用戶登錄。


但是你可以執行外部應用程序它使用runasoriginaluser標誌或ExecAsOriginalUser函數將註冊表項寫入爲安裝的一部分。

可以使用reg.exe此:

[Run] 
Filename: reg.exe; Parameters: "ADD HKCU\Software\MyProgram /v Foo /t REG_SZ /d Bar"; \ 
    Flags: runasoriginaluser runhidden 

procedure CurStepChanged(CurStep: TSetupStep); 
var 
    Params: string; 
    ResultCode: Integer; 
begin 
    if CurStep = ssPostInstall then 
    begin 
    Log('Adding registry key for original user'); 
    Params := 'ADD HKCU\Software\xxxx /v Foo /t REG_SZ /d Bar'; 
    if ExecAsOriginalUser(
     'reg.exe', Params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and 
     (ResultCode = 0) then 
    begin 
     Log('Added registry key for original user'); 
    end 
     else 
    begin 
     Log('Error adding registry key for original user'); 
    end; 
    end; 
end; 

學分的想法: 文件名:REG @Markus

-1
與[運行]部分

。可執行程序;參數:「IMPORT ...」和標誌:runascurrentuser!

+1

多一點散文可能會有幫助;) – 2016-10-28 08:07:12