【发布时间】:2010-10-04 09:19:51
【问题描述】:
我相信我在本地计算机上运行 ASP.NET 页面时成功模拟了自己的用户帐户。
使用here 描述的方法,我已经成功地将WindowsIdentity.GetCurrent().Name 从 ASPNET 更改为我的域帐户。
我可以成功写入文件系统上只有我的帐户有权访问的文件。但是,当我尝试删除性能计数器类别时,我得到 Access Denied。
我对注册表的分支进行了审核,它告诉我 MyMachine\ASPNET 在对象访问时失败。
这是失败的代码:
if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
PerformanceCounterCategory.Delete ( PerfmonCategory );
删除调用失败。
(我的帐户是管理员,我可以在 ASP.NET 上下文之外成功运行相同的代码)。
我怀疑这个 System.Diagnostics 命名空间调用实际上是在调用某个 COM 进程,并且不知何故因为第二跳而被退回。谁能确认会发生什么?
编辑: 例外: 访问被拒绝 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:
System.ComponentModel.Win32Exception:访问被拒绝
在完全信任的情况下运行。
【问题讨论】:
-
粘贴抛出的异常怎么样,如果你在部分信任下运行,我敢打赌这是一个 CAS 异常
标签: asp.net permissions impersonation performancecounter