Requested registry access is not allowed(要求されたレジストリアクセスは許可されません)


Requested registry access is not allowed(要求されたレジストリアクセスは許可されません)


今日、サービスプログラムを書いているときにこの問題に遭遇しました.自分のXPの本でテストOKしたので、windows server 2003サーバーに配備してこの問題が発生しました.権限管理の問題だと思います.
問題は次のように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. この問題は、ログインに使用するユーザーアカウントに十分な権限がないためです.最初にEventLogを呼び出す.CreateEventSource()メソッドでカスタムイベントログを作成すると、次のレジストリサブアイテムの下にカスタムイベントログエントリが作成されます:HKEY_LOCAL_MACHINESYSTEMCurrentControl SetServicesEventlogこのサブエントリを作成するには、書き込み権限が必要です.ただし、一般ユーザーアカウントには書き込み権限がありません.したがって、「症状」セクションでエラーメッセージが表示されます.警告:レジストリエディタまたは他の方法でレジストリが誤って変更された場合、深刻な問題が発生する可能性があります.これらの問題は、OSを再インストールして解決する必要がある場合があります.Microsoftはこれらの問題を解決できるとは保証できません.レジストリを変更するには、リスクを負う必要があります.この問題を解決するには、次のいずれかの方法を使用します.
  • カスタムイベントログの作成権限
  • カスタムイベントログ
  • を管理者としてインストール
    カスタムイベントログの作成権限の付与
  • は、管理者としてコンピュータにログインします.
  • [開始]と[実行]の順にクリックし、[開く]ボックスにregeditと入力し、[OK]をクリックします.レジストリエディタ(レジストリエディタ)ウィンドウが開きます.
  • 次のレジストリ・サブアイテムが見つかりました:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
  • [Eventlog]を右クリックし、[権限]をクリックします.「Eventlogの権限」ダイアログ・ボックスが表示されます.
  • [詳細設定]をクリックします.「Eventlogの高度なセキュリティ設定」ダイアログ・ボックスが表示されます.
  • [名前]列で、[Users]グループをダブルクリックします.「Eventlogの権限項目」ダイアログ・ボックスが表示されます.
  • [数値を設定]チェックボックスと[サブアイテムを作成]チェックボックスを選択し、[OK]をクリックします.
  • レジストリエディタを終了し、管理者アカウントからログアウトします.
  • は、一般ユーザとしてコンピュータにログインする.
  • Visual Studioの使用を試みる.NETはカスタムイベントログを作成し、Visual Studioベースを使用してみます.NETが構築したアプリケーションは、このイベントログに書き込まれます.

  • 管理者としてカスタムイベントログをインストール
  • は、管理者としてコンピュータにログインします.
  • Visual Studioを使用する.NETのCreateEventSourceメソッドでは、カスタムイベントログとイベントログソースを作成します.
  • 管理者アカウントからログアウトします.
  • は、一般ユーザとしてコンピュータにログインする.
  • は、アプリケーションを実行することによって、カスタムイベントログにエントリを書き込む.

  • 問題は明らかで、イベントログがレジストリにある場所も見つかりました.次回は不要なテストログを直接削除することができます.