Windows 无法通过NSIS写入注册表值

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

我想让我的应用程序在Windows 8.1下以管理员身份运行,因此我使用NSIS通过在Windows注册表中添加以下值来进行调整:

[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"