我對這個問題的答案/解決方法。
首先,我不同意(恭敬地)與註釋,使用AppCompatFlags不是「配置您的應用程序和安裝適當的方式。」修改註冊表的這一部分僅僅是使用Windows GUI鏡像來更改可執行文件的權限級別。我發現這個方法比添加清單文件更容易實現。如果用戶想要或需要將特權級別更改爲不以管理員身份運行,則可以使用GUI輕鬆完成。
反正我有同樣的嘗試設置可執行文件的權限級別以管理員身份運行的問題。我們知道我們可以通過GUI設置它:
- 右鍵單擊快捷方式或。EXE文件,並選擇屬性
- 單擊兼容性選項卡上
- (在這一點上,你可以設置權限級別只是你或爲所有用戶;我喜歡做它爲所有用戶)
- 點擊按鈕,更改設置爲所有用戶
- 新的屬性窗口打開標題爲「所有用戶的兼容性」
- 根據權限級別檢查「以管理員身份運行此程序」,單擊確定幾次以保存更改。
當保存更改後,你會發現在註冊表中的設置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Program Files (x86)\\My Program\\My Program.exe"="RUNASADMIN"
當我設置了.exe
使用GUI以這種方式以管理員身份運行,它始終工作。
但是,無論何時我試圖直接更改註冊表而不通過GUI,程序都不會以管理員身份運行。註冊表顯示我進行了更改,當我查看可執行文件的權限級別時,以管理員身份運行時被選中。
我嘗試了幾種不同的方式僅通過更改註冊表,使.exe
以管理員身份運行:
- 手工編輯用註冊表編輯器註冊表從
.reg
文件
- 使用的
- 進口的變化命令行工具reg.exe更改註冊表
- 使用現已不存在的智能腳本工具
- 使用的AutoIT腳本
所有這些方法都做了同樣的事情。註冊表已更改,GUI顯示該程序應以管理員身份運行,但該程序從不以管理員身份運行。
針對我偶然發現的這個問題的解決方法是繼續前進,並使用該設置更改HKCU
密鑰和HKLM
密鑰。
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Program Files (x86)\\My Program\\My Program.exe"="RUNASADMIN"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Program Files (x86)\\My Program\\My Program.exe"="RUNASADMIN"
如果更改這兩個註冊表部分,那麼.exe
將作爲管理員身份運行。更重要的是,如果不同的用戶登錄到PC,程序將以管理員身份運行。儘管註冊表的更改沒有作爲後續用戶的HKCU部分。
我不知道這裏發生了什麼,但它正在工作。
感謝lextm。我不知道可以爲我沒有創建的exe文件創建清單文件。或者他們不必被嵌入。感謝您的鏈接。 – JimDel 2009-11-13 19:24:05
@JimDel:所有這些鏈接似乎都與嵌入清單有關。你在哪裏看到我怎麼做「對於我沒有創建的exe文件?」 – Pete 2014-02-07 19:04:11