ローカル マシンで ASP.NET ページを実行しているときに、自分のユーザー アカウントの偽装に成功したと思います。
こちらで説明されている方法を使用してWindowsIdentity.GetCurrent().Name
、ASPNET からドメイン アカウントに正常に変更されました。
自分のアカウントだけがアクセスできるファイル システム上のファイルに正常に書き込むことができます。ただし、パフォーマンス カウンター カテゴリを削除しようとすると、Access Deniedが表示されます。
レジストリのブランチを監査しており、MyMachine\ASPNET が Failing at Object Access であることがわかりました。
失敗しているコードは次のとおりです。
if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
PerformanceCounterCategory.Delete ( PerfmonCategory );
削除呼び出しで失敗します。
(私のアカウントは管理者であり、ASP.NET コンテキストの外部で同じコードを正常に実行できます)。
この System.Diagnostics 名前空間の呼び出しは、実際には何らかの COM プロセスを呼び出しており、2 番目のホップが原因でバウンスされていると思われます。誰が何が起こっているのかを確認できますか?
編集: 例外: アクセスが拒否されました 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細:
System.ComponentModel.Win32Exception: アクセスが拒否されました
完全な信頼の下で実行されます。