以编程方式删除文件夹为admin

时间:2015-07-01 23:53:47

标签: c# asp.net

我正在尝试删除起诉C#和ASP.net的用户配置文件夹,当我通过Windows UI执行此操作时,我会收到一个UAC提示,这很好。

我希望以编程方式使用ASP.net& C# 。 目标是管理员用户启动webform并在工作站上远程执行此操作,但我目前正在获得权限错误。 (我在我的调试环境中以管理员身份运行visual studio以删除本地用户)

{“访问路径'C:\ Users \ nzsp2013admin \ AppData \ Local \ Microsoft \ Windows \ Application ......被拒绝。”}

代码:

  

var dir = new DirectoryInfo(“C:\ Users \ nzsp2013admin”);

     

dir.Attributes = dir.Attributes& 〜FileAttributes.ReadOnly;
         dir.Delete(真); // true =>递归删除

3 个答案:

答案 0 :(得分:1)

这与IIS中配置的权限有关。

您在IIS中运行的每个ASP.NET应用程序都将使用可在Application Pools的{​​{1}}部分中管理的标识运行。

默认情况下,创建的每个IIS Manager(包括默认值)都将在有限范围内拥有权限。

如果我说实话,Application Pool这句话让事情听起来比实际上更复杂。应用程序池只是一个用于登录PC的身份,在您的情况下,具有普通用户权限的身份正在尝试执行需要一组更高权限的操作。

要解决此问题,请打开IIS。

  1. 点击“应用程序池”
  2. 下选择运行Web应用程序的应用程序池
  3. 点击高级设置
  4. 点击身份并选择自定义身份
  5. 输入具有管理权限的帐户的凭据。
  6. Steps to configure permissions

    enter image description here

    但是,我必须警告您,您可能会遇到各种各样的安全问题,并且还有其他选择,例如向包含运行ASP.NET应用程序的标识的特定目录添加显式权限从

答案 1 :(得分:0)

我使用这种方法,效果很好。使用这种方法,您不必在需要时始终使用具有高级权限的帐户,而不是应用程序执行。

尝试使用域帐户并为您需要的文件夹或说明添加权限。并共享该文件夹,以便您可以使用unc路径。

Accessing a Shared File (UNC) From a Remote, Non-Trusted Domain With Credentials

答案 2 :(得分:0)

您可以使用代码模拟:

http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html
http://www.codeproject.com/Articles/14358/User-Impersonation-in-NET

无论您使用何种模仿,都必须能够读取/写入该位置。我们在跨网络的删除/创建文件夹的应用程序中使用此方法,但理论上,您应该能够将此包装在任何代码段周围,检查用户是否为管理员,如果是,请使用模拟用户删除文件夹,或者你喜欢这样做。

另外,我注意到你提到你想要远程进行,但你的例子有本地路径。

您可能还会发现这有用:Deleting Windows user accounts remotely WCF and C#