Requested registry access is not allowed(不允許所請求的系統資料庫通路權)
今天在寫一個Service程式時候遇到這個問題,因為在家裡電腦上沒有問題的(XP),不成想在公司的Win7上居然出現這個問題,猜測應該是Win7的權限管理問題。
問題出現在如下建立一個EventLog的代碼中,
- public void LogEvent(String Message, EventLogEntryType type)
- {
- string source = "DemoSource";
- if (!EventLog.SourceExists(source))
- {
- EventLog.CreateEventSource(source, "DemoLog");
- }
- _log = new EventLog();
- _log.Source = source;
- LogEvent(Message, type);
- }
因為是使用VS調試的,就想還是用管理者權限來跑一下試試(i.e. Run as administrator),結果果然很靈光,順利通過。
然後去谷哥上Search一下:
EventLog.CreateEventSource() 如果以普通使用者身份登入計算機,并嘗試使用 Microsoft Visual Studio .NET 建立自定義事件日志以注冊事件,可能會收到以下錯誤消息: An unhandled exception of type 'System.Security.SecurityException' occurred in mscorlib.dll Additional information:Requested registry access is not allowed. 出現此問題的原因在于登入所用的使用者帳戶沒有足夠的權限。 首次調用 方法建立自定義事件日志時,将會在下面的系統資料庫子項下建立自定義事件日志條目: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog 要建立此子項條目,必須擁有寫權限。但是,普通使用者帳戶沒有寫權限。是以,會收到“症狀”部分中提到的錯誤消息。 警告:如果使用系統資料庫編輯器或其他方法錯誤地修改了系統資料庫,則可能導緻嚴重問題。這些問題可能需要重新安裝作業系統才能解決。Microsoft 不能保證可以解決這些問題。修改系統資料庫需要您自擔風險。 要解決此問題,請使用下列方法之一:
|