5

最後の質問「Win-7でのサービスとサービスのステータスの一覧表示」により、.manifestファイルに基づいてWindowsVista以降でアプリに管理者権限を付与するソリューションの開発を開始しました。

それらは同じではないので、私はこの問題で前の質問を続けることについて確信がありませんでした、それでここに別の質問があります:

マニフェストファイルがあるため、「管理者として」実行するかどうかに関係なく、Win7でアプリが正常に動作するようになりました。私のマニフェストファイルは次のとおりです。

<?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>

アプリケーションがWindows7またはVistaで実行される場合、UACには次のようなダイアログが表示され ます。alttext http://www.freeimagehosting.net/uploads/39787fd3dd.jpg

「不明な」発行元を置き換えるにはどうすればよいですか。

もう1つの最大の問題は、Win7またはVistaでアプリを問題なく実行しても、WinXPでクラッシュし、「アプリケーションの構成が正しくないため、このアプリケーションを起動できませんでした。アプリケーションを再インストールすると、これが修正される場合があります。問題。"

追加したいもう1つのこと:XPManに参照(uses句)を追加すると、アプリはWinXPで正常に動作しますが、.manifestファイルはVistaまたはWin7で違いがありません。

4

4 に答える 4

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 ファイルを混合し、依存関係セクションを追加しました。誰かがなぜそれが現在機能しているのかを知っているなら、私は喜んで聞いてくれるでしょう-しかし、これはここでの解決策でした-これまでのところ、私のコンピューターと他のいくつかの仮想マシンでテストされています...動作しています:)

于 2010-04-06T23:51:10.493 に答える
8

コード署名証明書を使用してコードに署名する必要があります。ここにはたくさんの例があるはずです。あなたの質問に「コード署名」のタグを付け直しました。「証明書」を探すこともできます。
私は Comodo 証明書を自分で使用しており、SO の広告主である素晴らしい Visual Build Pro v6 で署名しています。

于 2010-04-06T21:12:36.567 に答える
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>
于 2010-04-07T12:53:28.170 に答える