ron*_*ana 5 windows delphi privileges code-signing manifest
我的最后一个问题"在Win-7下列出服务和服务状态"使我开始研究一种解决方案,该解决方案基于.manifest文件为我的应用程序提供Windows Vista以后的管理员权限.
我不确定继续上一个问题,因为它们不一样所以这是另一个问题:
我的应用程序现在在Win 7下工作正常,无论我是否因为清单文件而"以管理员身份"运行它.我的清单文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.6.0.5" processorArchitecture="X86" name="ServiceMonitorPro" type="win32"/>
<description publisher="Powershield Ltd" product="Powershield Service Monitor">Powershield Service Monitor</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)
当应用程序在Windows 7或Vista上运行时,UAC会出现如下对话框: alt text http://www.freeimagehosting.net/uploads/39787fd3dd.jpg
如何替换"未知"发布者?
另一个也是最大的问题是,即使你的应用程序在Win7或Vista下运行没有问题,在WinXP下它现在崩溃的消息:"此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会修复此问题问题."
我要添加的另一件事:如果我向XPMan添加引用(使用子句),那么应用程序在WinXP上工作正常,但是我的.manifest文件在Vista或Win7下没有任何区别.
ron*_*ana 12
我要感谢所有人,评论或回答让我继续挖掘...... :)我去搜索文件WindowsXP.res.该文件的内容是:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="DelphiApplication"
version="1.0.0.0"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)
解决方案:我已将我的.manifest文件与添加了依赖项部分的WindowsXP.Res xml混合.如果有人知道为什么它现在正在工作,我会很高兴听到 - 但这是解决方案 - 到目前为止测试了几个虚拟机,在我的电脑和其他几个......工作:)
您需要使用代码签名证书对代码进行签名.这里应该有很多例子.我用"代码签名"重新标记了您的问题,您还可以查找"证书".
我自己使用Comodo证书,并使用令人敬畏的,精彩的Visual Build Pro v6签名,这是SO的广告客户.