【发布时间】:2011-03-12 17:23:35
【问题描述】:
我正在编写一个小的 WPF 实用程序来管理主机文件中的条目以用于开发目的。您可能知道主机文件受较新的操作系统(Win 7/2008/Vista)保护。
我已在我的应用程序中添加了一个清单,以将 requestedExecutionLevel 设置为“requireAdministrator”,详见here(使用“简单方法”)和相关问题here。
不幸的是,这对我不起作用。启动应用程序时没有提升提示,并且为主机文件调用 File.AppendText 仍然会导致抛出 System.UnauthorizedAccessException:“访问路径 'C:\Windows\System32\drivers\etc\hosts' 是拒绝。”
HostsChanger.exe.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="HostsChanger" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
有什么想法吗?
【问题讨论】:
-
因此,如果您不提升权限,则完全可以预期访问受保护的注册表项时的异常。不过,我没有使用足够多的清单来记住所有步骤,所以我不知道为什么您尝试的方法对您不起作用。
-
是的,预计会出现异常......并且提升应该可以解决它,但缺少提示表示没有发生提升。
-
我正在寻找一个简单的 Hostschanger 程序,但我还没有找到
-
@jasondavis 随意在这里获取我的应用程序:bloing.net/hostschanger
标签: c# wpf security elevated-privileges hosts-file