我相信我在本地机器上运行 ASP.NET 页面时成功地模拟了我自己的用户帐户。
使用此处描述的方法,我已成功将WindowsIdentity.GetCurrent().Name
ASPNET 更改为我的域帐户。
我可以成功写入文件系统上只有我的帐户有权访问的文件。但是,当我尝试删除性能计数器类别时,我得到Access Denied。
我对注册表的分支进行了审计,它告诉我MyMachine\ASPNET 在 Object Access 失败。
这是它失败的代码:
if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
PerformanceCounterCategory.Delete ( PerfmonCategory );
它在删除呼叫上失败。
(我的帐户是管理员,我可以在 ASP.NET 上下文之外成功运行相同的代码)。
我怀疑这个 System.Diagnostics 命名空间调用实际上是在调用一些 COM 进程,并且不知何故因为第二跳而被退回。谁能确认可能发生了什么?
编辑:异常:访问被拒绝描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:
System.ComponentModel.Win32Exception:访问被拒绝
在完全信任下运行。