簡體   English   中英

無法通過NSIS寫入注冊表值

[英]Unable to write registry value via NSIS

我想讓我的應用程序在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注冊表中進行編寫(第一行和第二行工作正常,而第三行則行不通)

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"

您實際上不應該寫AppCompatFlags鍵。 您的應用程序應該檢測到它沒有提升,然后通知用戶或嘗試重新啟動自己。

如果這是64位系統,則將有兩個AppCompatFlags密鑰(另一個在Software \\ Wow6432Node下),您可以使用SetRegView NSIS指令選擇要寫入的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM