【问题标题】:Installer is ignoring WriteRegStr (trying to add application to Win Startup)安装程序忽略 WriteRegStr(尝试将应用程序添加到 Win Startup)
【发布时间】:2012-09-19 03:06:10
【问题描述】:

我正在将应用程序安装到 Windows 7 机器上(我的应用程序针对一个特定设备),并且我试图让它在操作系统启动/登录时运行。

这是一个 Silverlight OOB 应用程序,我认为这可能是一个问题,但我用记事本测试它仍然无法正常工作。

我按照here的例子:

!include "MUI.nsh"

Name "Tech Drive Installer"
OutFile "techdrive_setup.exe"
InstallDir "$PROGRAMFILES\Tech Drive"

RequestExecutionLevel admin
ShowInstDetails show

!insertmacro MUI_LANGUAGE "English"

Section
    SetOutPath "$INSTDIR"
    SetOverwrite ifnewer

    File "TechDrive.xap"
    ExecWait '"$PROGRAMFILES\Microsoft Silverlight\sllauncher.exe" /install:"$INSTDIR\TechDrive.xap" /origin:"http://localhost/TechDrive.xap" /shortcut:desktop'

    WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" "TechDrive" '"$PROGRAMFILES\Microsoft Silverlight\sllauncher.exe" 3388701632.localhost'
SectionEnd

为什么这不起作用?

【问题讨论】:

    标签: windows-7 registry nsis


    【解决方案1】:

    WriteRegStr 调用在这台 32 位 Win7 机器上运行良好。写信给 HKLM 时,您应该make sure you are admin

    如果您使用的是 64 位操作系统,您最终将写入WOW64 part of the registry。在 NSIS 中,您可以使用 SetRegView 指令来控制它,但运行键应该可以工作。

    您可以使用Autoruns 来验证是否正确添加了值,或者直接使用Process Monitor 对其进行监控。如果它仍然无法启动,我会仔细检查路径以确保它是正确的。 (启动时运行的程序也不允许需要管理员权限)

    【讨论】:

    • 啊,谢谢。我不知道单独的 32/64 位注册表部分。这就是问题所在,因为它可以在我的 32 位平板电脑上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多