为什么.NET File.Delete()会因UAC和requireAdministrator = True而失败?

时间:2009-12-10 20:40:20

标签: .net uac windows-vista managed

这让我疯狂。我搜遍了StackOverflow并阅读了有关UAC的所有信息。但我仍然遇到了问题。

使用VS 2008,我有一个简单的程序,除此之外什么都不做:

File.Delete("c:\windows\fonts\whatever.ttf")

EXE有一个使用requireAdministrator = True的正确清单。编译时,应用程序图标会收到盾牌图标。当我启动应用程序,以Admin或Standad用户身份登录时,我会收到“您是否希望以下程序进行更改...”确认对话框。另外,我在EXE上使用代码签名证书。

运行应用程序时,我会收到以下行为:

以管理员身份登录时运行应用程序时,文件将被删除。

但是,当以标准用户身份登录时,我会收到UAC提示并输入管理员密码,但执行删除操作时出现“文件访问被拒绝”错误。

有人可以向我解释一下吗?我认为清单中的requiresAdministrator = True会提升进程。但我仍然无法删除系统文件。

感谢。

1 个答案:

答案 0 :(得分:1)

它确实提升了进程,但是如果文件具有访问控制,指示只有管理员组的成员可以修改或删除它,并且“标准”用户不是管理员组的成员,那么他仍然无法修改文件。