这让我疯狂。我搜遍了StackOverflow并阅读了有关UAC的所有信息。但我仍然遇到了问题。
使用VS 2008,我有一个简单的程序,除此之外什么都不做:
File.Delete("c:\windows\fonts\whatever.ttf")
EXE有一个使用requireAdministrator = True的正确清单。编译时,应用程序图标会收到盾牌图标。当我启动应用程序,以Admin或Standad用户身份登录时,我会收到“您是否希望以下程序进行更改...”确认对话框。另外,我在EXE上使用代码签名证书。
运行应用程序时,我会收到以下行为:
以管理员身份登录时运行应用程序时,文件将被删除。
但是,当以标准用户身份登录时,我会收到UAC提示并输入管理员密码,但执行删除操作时出现“文件访问被拒绝”错误。
有人可以向我解释一下吗?我认为清单中的requiresAdministrator = True会提升进程。但我仍然无法删除系统文件。
感谢。
答案 0 :(得分:1)
它确实提升了进程,但是如果文件具有访问控制,指示只有管理员组的成员可以修改或删除它,并且“标准”用户不是管理员组的成员,那么他仍然无法修改文件。