KB : 讓你的應用程式以系統管理員的身分執行

摘要:How to:讓你的應用程式以系統管理員的身分執行

今天再測試東西的時候發生一件怪事情,我使用EventLog類別寫入系統Log,但無論如何都會都會傳回一個例外狀況SecurityException。

咦...見鬼了,我之前這樣做明明都沒問題。馬上心裡浮現一個念頭,會不會是因為在Vista上受到UAC的限制?

查了一下MSDN文件庫後果然看到下面這個敘述

如果要在 Windows Vista、Windows XP Professional 或 Windows Server 2003 中搜尋事件來源,您必須擁有系統管理員權限。

有這項需求是因為必須搜尋所有事件記錄檔 (包括安全性),以判斷事件來源是否為唯一。在 Windows Vista 中,使用者沒有存取安全性記錄檔的權限,因此會擲回 SecurityException

在 Windows Vista 中,使用者的權限是由使用者帳戶控制項 (UAC) 決定。如果您是內建 Administrators 群組的成員,系統會將兩個執行階段存取語彙基元 (Token) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。根據預設,您會屬於標準使用者角色。若要執行會存取效能計數器的程式碼,您必須先將您的權限從標準使用者提高為系統管理員。您可以在啟動應用程式時進行這項處理,其方式是以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員的身分執行。

問題來了...總不可能每次都要USER以滑鼠右鍵安一下應用程式圖示,然後選擇以系統管理員身分執行。

皇天不負苦心了,在我向Google大神求救後,得到了解決的方法。

Run an Application in Vista with Administrator

1.請在你的應用程式中,加入一個【應用程式資訊清單檔案 / app.manifest】。

2.修改新加入的app.manifest內容未下面這樣即可。

 參考資料