2010-04-06 76 views
5

我的最後一個問題「的Win7下列表服務和服務狀態」下的應用程序清單文件的問題使我開始尋找解決方案,讓我的應用程序工作在Windows Vista下的管理權限以後根據.manifest的文件。德爾福的WinXP和Win7

我不知道關於繼續與這件事情對前一個問題,因爲他們沒有那麼這裏同樣是另一個問題:

我的應用程序現在能正常工作的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

我怎麼能代替「不明」出版商?

其他和bigest問題是,即使你的應用程序與Win7的或Vista下沒有問題的運行,在WinXP下它現在與消息崩潰: 「此應用程序未能啓動,因爲應用程序配置不正確,重新安裝該應用程序可能會解決這個問題。「

另一件事我想補充:如果 我添加引用(使用條款)來XPMan 應用程序工作在WinXP正常,但隨後 是我.manifest的文件是沒有 在Vista或Win7的性差異。

回答

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> 

解決辦法:我感慨我.manifest的文件與WindowsXP.Res XML一個加入依賴部分。 如果有人知道爲什麼它現在的工作,我會很高興聽到 - 但這是這裏的解決方案 - 在幾個虛擬機的測試通過爲止,我的電腦和其他幾個... :)工作

+0

太棒了!感謝您在這裏發佈解決方案。我認爲如果它得到了足夠的支持,那麼就有一個很好的徽章。 – 2010-04-07 00:38:02

8

你需要用代碼簽名證書籤名的代碼。這裏應該有很多例子。我已用「代碼簽名」重新標記了您的問題,您也可以查找「證書」。
我用的Comodo證書自己,並與真棒,精彩,視覺構建Pro的V6發動機,這是廣告客戶在這裏SO簽字。

+0

嗨,OK - 將檢查這,謝謝 - 任何想法與其他問題? – ronaldosantana 2010-04-06 21:15:18

+0

對不起,還沒有看到其他的。 – 2010-04-06 22:03:58

+1

@Ronaldo:另一個錯誤信息與所謂的「並排配置」有關。簡單來說,它期望找到一些運行時庫,但不能。對於使用最近的編譯器構建的VC++應用程序來說,它經常被看到。但是,這通常不會成爲Delphi應用程序的問題。你是否依賴於某些外部DLL?你有沒有檢查過它們是否真的在XP上可用,或者它們是否需要單獨安裝?如果需要安裝它們,你是否真的記得安裝它們? (嘿,你永遠不知道...) – 2010-04-06 22:09:48

3

可以表明在您的清單中各種版本的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> 
1

在德爾福(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>