簡體   English   中英

Delphi應用程序清單WinXP和Win7下的文件問題

[英]Delphi app manifest file problems under WinXP and Win7

我的最后一個問題“在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>

當應用程序在Windows 7或Vista上運行時,UAC會出現如下對話框: alt text http://www.freeimagehosting.net/uploads/39787fd3dd.jpg

如何替換“未知”發布者?

另一個也是最大的問題是,即使你的應用程序在Win7或Vista下運行沒有問題,在WinXP下它現在崩潰的消息:“此應用程序無法啟動,因為應用程序配置不正確。重新安裝應用程序可能會修復此問題問題。”

我要添加的另一件事:如果我向XPMan添加引用(使用子句),那么應用程序在WinXP上工作正常,但是我的.manifest文件在Vista或Win7下沒有任何區別。

我要感謝所有人,評論或回答讓我繼續挖掘...... :)我去搜索文件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>

解決方案:我已將我的.manifest文件與添加了依賴項部分的WindowsXP.Res xml混合。 如果有人知道為什么它現在正在工作,我會很高興聽到 - 但這是解決方案 - 到目前為止測試了幾個虛擬機,在我的電腦和其他幾個......工作:)

您需要使用代碼簽名證書對代碼進行簽名。 這里應該有很多例子。 我用“代碼簽名”重新標記了您的問題,您還可以查找“證書”。
我自己使用Comodo證書,並使用令人敬畏的,精彩的Visual Build Pro v6簽名,這是SO的廣告客戶。

您還可以在清單中指明與各種Windows版本的兼容性。 我知道有與Vista和Win7兼容的條目; 不確定XP。

有關清單兼容性部分的信息可從MSDN獲得 這也可能有助於 - 從鏈接頁面:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>

在較新版本的Delphi(我認為7及以上版本)中,您還需要確保在項目選項對話框中取消選中“使用運行時主題”選項,否則Delphi將自動鏈接到其自己的默認清單文件(這就是它的啟用方式) “主題支持”),您將收到有關應用程序配置不正確的運行時錯誤,因為會有沖突的條目。

這是Delphi2007應用程序的完整清單文件,需要在Windows 7中以管理員模式運行,還包括“依賴”部分以啟用運行時主題支持:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity
        type="win32"
        name="CodeGear RAD Studio"
        version="11.0.2902.10471" 
        processorArchitecture="*"/>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            publicKeyToken="6595b64144ccf1df"
            language="*"
            processorArchitecture="*"/>
        </dependentAssembly>
      </dependency>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="requireAdministrator"
              uiAccess="false"/>
            </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM