我正在尝试删除起诉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 =>递归删除
答案 0 :(得分:1)
这与IIS中配置的权限有关。
您在IIS中运行的每个ASP.NET应用程序都将使用可在Application Pools
的{{1}}部分中管理的标识运行。
默认情况下,创建的每个IIS Manager
(包括默认值)都将在有限范围内拥有权限。
如果我说实话,Application Pool
这句话让事情听起来比实际上更复杂。应用程序池只是一个用于登录PC的身份,在您的情况下,具有普通用户权限的身份正在尝试执行需要一组更高权限的操作。
要解决此问题,请打开IIS。
但是,我必须警告您,您可能会遇到各种各样的安全问题,并且还有其他选择,例如向包含运行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#