Windows 无法通过NSIS写入注册表值
我想让我的应用程序在Windows 8.1下以管理员身份运行,因此我使用NSIS通过在Windows注册表中添加以下值来进行调整:Windows 无法通过NSIS写入注册表值,windows,registry,nsis,Windows,Registry,Nsis,我想让我的应用程序在Windows 8.1下以管理员身份运行,因此我使用NSIS通过在Windows注册表中添加以下值来进行调整: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] "C:\\MBM\\testo.exe"="~ RUNASADMIN" 问题是:NSIS不会将此值写入Windows注册表,尽管它可以写入其他值 NSIS作为管理员使用 RequestExe
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\MBM\\testo.exe"="~ RUNASADMIN"
问题是:NSIS不会将此值写入Windows注册表,尽管它可以写入其他值
NSIS作为管理员使用
RequestExecutionLevel admin
我使用以下NSIS代码段在Windows注册表中编写(第1行和第2行可以正常工作,而第3行不行)
您实际上不应该写入AppCompatFlags键。应用程序应检测到未提升,然后通知用户或尝试重新启动自身 如果这是64位系统,则将有两个AppCompatFlags键(另一个在Software\Wow6432Node下),您可以使用
SetRegView
NSIS指令选择要写入的键
WriteRegStr HKLM "SOFTWARE\${ORGANIZATION}\${APPNAME}" ClientVersion "${VERSION}"
WriteRegStr HKLM "SOFTWARE\${ORGANIZATION}\${APPNAME}" ClientPath "$INSTDIR"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" $INSTDIR\${APPNAME}.exe "~ RUNASADMIN"