2015-03-03 4 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, при запуске программы установки не является администратором? –

+0

Да, это не админ, но мне нужно установить его в реестр пользователей не в реестр администратора. oh btw первый реестр - просто пример для меня, чтобы увидеть, действительно ли он работает. – Shana

ответ

0

Из формулировки вашего вопроса, это звучит, как это происходит потому, что вы «проверку с учетной записью администратора для запуска установки ». Если это так, и вы вводите другую учетную запись (с того, с которой вы вошли в систему) в приглашении UAC, текущий пользователь фактически становится учетной записью администратора, которую вы только что ввели в приглашении UAC, а не учетной записью, которую вы зарегистрировали в с. Вам может понадобиться использовать функцию runasoriginaluser, которая будет использовать зарегистрированные учетные данные пользователя вместо учетной записи, введенной в приглашении UAC.

+0

в какой части мне нужно включить это? – Shana

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; 

Кредиты на мысль: @Markus

-1

в секции [Run] с: Имя файла: обл .Exe; Параметры: «IMPORT ...» и флаг: runascurrentuser!

+1

Немного больше прозы может быть полезно;) –