我正在编写一些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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top