如何在Windows 7/Server 2008中编程编辑主机文件?
-
02-10-2019 - |
题
我正在编写一些WPF实用程序来管理主机文件中的条目,以进行开发目的。如您所知,主机文件受到较新的OSS(Win 7/2008/Vista)的保护。
我已经在我的应用程序中添加了一份清单,将请求的ExecutionLevel设置为“ quienteadministrator”,如详细 这里 (使用“简单方式”)和相关问题 这里.
不幸的是,这对我没有用。当我启动应用程序并调用文件时,没有高程提示。主机文件的应用程序仍然会导致系统。否认。”
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>
有任何想法吗?
解决方案
从我之前的评论中解释了一个答案:
HO1给出的答案包含一个应用程序。manifest与我在工作中工作的应用程序完全相同,并且高程正在为此工作。这里的区别在于,文件名是“ app.manifest”,项目选项“清单”(在“应用程序”选项卡上)指向它。
其他提示
我不确定是否会有所不同,但是您的清单片段与我对应该如何的理解略有不同(尽管可能是不同的版本):
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="HostsChanger" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
否则,围绕的工作可能是拥有一个单独的“加载程序”应用程序,该应用程序以用户开头,并且仅使用The Real WPF工具启动您的真实WPF工具 Verb
runas
如所详细介绍 这 博客文章(所以 Process.StartInfo.Verb = "runas";
).
我要在黑暗中刺伤,并说这是一个authenticode签名问题。我没有听说您提到有关签署申请的任何内容。就我的理解而言,与Vista不同,在Windows 2008/7中,运行应用程序的唯一方法是拥有签名的应用程序清单,以标识应用程序所需的特权级别。如果您需要帮助签名,这里是有关如何签署申请的文章: http://msdn.microsoft.com/en-us/library/bb756995.aspx