I do not think that you can explicitly write down the registry keys of the logged-in user from Inno Setup. You can write to the registry key a user that only the installer launches.
You can write to any (or all) user registry keys through HKEY_USERS
, but I donβt know if you can tell which user is logged in.
But you can run an external application that writes the registry key as part of the installation using the runasoriginaluser
flag or the ExecAsOriginalUser
function.
You can use reg.exe
:
[Run] Filename: reg.exe; Parameters: "ADD HKCU\Software\MyProgram /v Foo /t REG_SZ /d Bar"; \ Flags: runasoriginaluser runhidden
or
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;
Credits for the idea: @Markus
source share