我想以管理員身份運行我的 C# 控制台應用程序,而無需在非管理員帳戶上使用 UAC。問題是,當我使用任務排程器或 Microsoft 相容性工具包停用 UAC 時,我的應用程式以非管理員權限執行。只有當我右鍵單擊 - 以管理員身份運行並輸入密碼時,我才能破壞具有管理員權限的應用程式。但我不想那樣做。我想在具有管理員權限的非管理員帳戶上運行應用程式。當我嘗試使用“runas”運行應用程式並且使用具有正確密碼的管理員帳戶時,它會彈出:存取被拒絕。我不知道問題是出在我的應用程式還是其他地方。
謝謝
答案1
新增應用程式清單檔案並輸入以下程式碼
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
答案2
使用任務計劃程序「以最高權限運行」的過程並不是繞過UAC的方法。
如果您有一個應用程式需要運行並與登入使用者交互,那麼該應用程式將使用使用者的權限運行。您可以使用任務規劃程式以其他使用者身分執行任務,但它不會與登入使用者互動。以登入使用者身分執行任務會將應用程式限制為使用者擁有的最高權限。
使用應用程式相容性工具包的其他過程也無法解決該問題。其作用是獲取一個行為不當的應用程序,該應用程式“需要”管理員密碼,但實際上並不“需要”管理員權限,並使其能夠在沒有任何 UAC/管理員提示的情況下運行。
如果您的應用程式「需要」管理員權限,則使用者必須使用該使用者的使用者名稱和密碼以具有管理員權限的另一個使用者身分執行該應用程序,否則將會失敗。
在電腦上停用 UAC 不僅會嚴重降低系統的安全性,因此當您使用有限使用者帳戶執行任何應用程式時,甚至不會提示您使用管理員使用者和應用程式的憑證進行升級,如果需要管理員存取權限,將會失敗。
這裡的問題是您的應用程式需要管理員權限。這就是需要解決的問題。它在做什麼需要管理員權限?為什麼?重新設計一下,這樣就不會了。否則,沒有「安全性」方法允許非管理員使用者以管理員權限執行應用程式。設計需要標準使用者使用權限等級的應用程式已不再是可接受的做法,而且多年來一直如此。
如果您絕對必須讓標準用戶以管理員身份運行應用程序,您可以使用“runas”命令或某些第三方管理員工具,允許用戶請求訪問權限,並允許管理員遠端回應以允許應用程式。再說一次,問題是應用程序,而不是作業系統。在大多數要求用戶首先使用有限帳戶的用例中,嘗試解決此問題是不可接受的。