2015-03-03 173 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