2015-07-10 125 views

回答

2

我假設的可執行文件「安裝執行」序列外推出。我猜你試圖在用戶點擊安裝完成對話框上的「完成」按鈕時啓動這些可執行文件。
使用UAC時,應用程序和任務始終在非管理員帳戶的安全上下文中運行,除非管理員明確授權管理員級別訪問系統。即使您以管理員身份登錄,您運行的任何應用程序也不會以完全管理權限運行。每個需要管理員訪問令牌的應用程序必須提示管理員同意。當管理員登錄時,會爲該用戶創建兩個單獨的訪問令牌:標準用戶訪問令牌和管理員訪問令牌。標準用戶訪問令牌包含與管理員訪問令牌相同的用戶特定信息,但管理Windows權限和SID將被刪除。標準用戶訪問令牌用於啓動應用程序。標準用戶訪問令牌隨後用於顯示桌面(Explorer.exe)。 Explorer.exe是所有其他用戶啓動的進程繼承其訪問令牌的父進程。因此,所有應用程序都以標準用戶身份運行,除非用戶提供同意或憑據來批准應用程序以使用完整管理訪問令牌。

在你的情況,我假設從非提升的命令提示符安裝msi包。因此,msi軟件包正在以標準用戶權限運行。因此,在InstallExecute序列之外的此msi軟件包中產生的任何子進程將以標準用戶權限運行。

要使應用程序符合UAC,應用程序需要在應用程序清單中指定「請求的執行級別」。請求的執行級別指定應用程序所需的權限。

在您的可執行文件的應用程序清單中請求的執行級別是什麼? 您可以使用Sysinternals套件中名爲「sigcheck.exe」的工具來驗證您的exectuable的嵌入式清單中指定的請求執行級別。

驗證請求的執行級別。 我在考慮將它設置爲「requireAdministrator」,因爲它會被提示提升。將此更改爲「asInvoker」,然後解決您的問題。

您可以在以下位置瞭解更多有關UAC:

https://technet.microsoft.com/en-us/library/jj574202.aspx

問候,

基蘭赫格德

+0

你的問題解決了嗎?你需要更多的幫助來解決你的問題 –

1

當你聲明你已經使用「最大執行級別」時,你是什麼意思? 您是否在可執行文件的清單中使用「highestAvailable」的級別值?

看看MSDN文章供參考:

https://msdn.microsoft.com/en-us/library/bb384691.aspx

如果推出可執行文件不需要任何特殊的權限進行操作,你應該堅持使用「asInvoker」的水平。這將阻止可執行文件顯示UAC對話框。

問候, 基蘭赫格德

+0

我的意思是我運行MSI爲管理員。 –

相關問題