繁体   English   中英

ASP.NET可以模拟用户删除性能计数器类别吗?

[英]Can ASP.NET Impersonate a user to Delete a Performance Counter Category?

我相信在本地计算机上运行ASP.NET页面时,我已经成功模拟了自己的用户帐户。

使用此处描述的方法,我已成功将WindowsIdentity.GetCurrent().Name从ASPNET更改为我的域帐户。

我可以成功写入文件系统上只有我的帐户有权访问的文件。 但是,当我尝试删除性能计数器类别时,出现“ 拒绝访问”的提示
我已经审核了注册表的分支,并告诉我MyMachine \\ ASPNET在Object Access上失败

这是它失败的代码:

if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
        PerformanceCounterCategory.Delete ( PerfmonCategory );

它在删除呼叫上失败。

(我的帐户是admin,我可以在ASP.NET上下文之外成功运行相同的代码)。

我怀疑这个System.Diagnostics命名空间调用实际上是在调用某些COM进程,并且由于第二跳而以某种方式被退回。 任何人都可以确认发生了什么吗?

编辑:异常:访问被拒绝说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:

System.ComponentModel.Win32Exception:访问被拒绝

在完全信任下运行。

您可以在自己的应用程序池上运行您的应用程序(总是一件好事),并为服务用户分配适当的权限,这样您就无需弄混模拟。

您确实确实需要成为管理员才能添加或删除性能计数器。

我不确定您为什么要使用Win32 API调用来进行模拟-自从搞砸以来已经有一段时间了,但是我认为您所要做的就是使用

WindowsIdentity.GetCurrent().Impersonate()

为了清楚起见,您首先需要使用Windows身份验证在Web应用程序中进行身份验证,然后应该能够调用Impersonate()。

Impersonate()方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM