我今天在$LocalAppdata
文件夹中安装了一个电子应用程序。我今天的配置如下:
"nsis": {
"oneClick": true,
"perMachine": false,
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"runAfterFinish": false,
"include": "installer.nsh"
}
在我的installer.nsh文件中:
!macro preInit
SetRegView 64
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppdata\Programs\My App"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppdata\Programs\My App"
SetRegView 32
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppdata\Programs\My App"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppdata\Programs\My App"
!macroend
如果我以普通用户(或管理员用户)的身份运行安装程序,一切都正常,应用程序安装在"$LocalAppdata\Programs\My App"
下没有任何问题。
但在正常用户的情况下,右键单击安装程序,然后选择“以管理员身份安装”,应用程序将安装在管理员帐户的$LocalAppdata
内,而不是当前用户。我试图通过将$LocalAppdata
替换为$PROFILE
来找到解决方案,但似乎无法解决我的问题。
我可以有帮助,请使其工作,并使用当前用户$LocalAppdata
,而不是管理员谁给予的权利?
有没有办法通过.nsh脚本来实现?
先谢谢你了!
1条答案
按热度按时间wpcxdonn1#
这是根据微软的设计。非管理员用户无法提升自己,他们必须在UAC对话框中选择一个管理员,新提升的进程将以该管理员(其配置文件和HKCU)的身份运行。