2010-12-20 35 views
4

Windows 7で動作するVB6アプリケーション用のマニフェストファイルを作成しました(ビジュアルスタイルの変更ではなく、仮想レジストリにはアクセスしません)VB6のマニフェストがWindows 7で動作しない

exeファイル名は、マニフェストがCapadm40.exe.manifest命名され、Capadm40.exeで、次のものが含まれます。

<?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="CompanyName.Capadm40" 
    type="win32"/> 
    <description>Administers the System</description> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel 
      level="asInvoker" 
      uiAccess="false"/> 
     </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

しかし、これは任意の違いを確認していないようです。つまり、アプリケーションはまだ仮想化されたレジストリハイブを使用しています。何が奇妙なのは、アプリケーションexeのプロパティで「このプログラムを管理者として実行する」オプションをアンチックした後も、Windowsはアプリケーションアイコンにシールドを表示しています。マニフェストの不具合よりも何か案は?

+0

exe上にシールドが付いている場合は、実行時に必ず高さの確認を求めますか?その場合、少なくともUACの仮想化ではなく、仮想化はできません。マニフェストの問題に対処しようとする前に、仮想化されたハイブの場所への書き込みが本当に確実であるかどうかを確認してください。 –

+0

これは標高を求めるものではありません。シールドを表示しているアイコンは、ある種のWindowsのバグでなければならないと思います。なぜなら、データのパスが異なるため、仮想化されたレジストリを使用しているためです私は右クリックし、runas管理者。問題はマニフェストが影響を及ぼさないようです(マニフェストをrequireAdministratorに変更したとしても) –

+0

マニフェストは間違いなく有効ですか?例えばそれはUTF-8でエンコードされていますか? – MarkJ

答えて

1

私はLaVolpeのマニフェスト作成者の利点を取るだろう、XP、Vistaと7のための素晴らしい作品:http://www.vbforums.com/showthread.php?t=606736

+0

以前はMake My Manifestを使ってみましたが、2つのプロジェクトを開いて鋭いUターンをとったときにクラッシュしましたが、このツールはうまくいくようです。ありがとう –

+1

これにつまずいている誰かにさらに注意してください。私はこのマニフェストクリエイターを多くのVB6プロジェクトに使用しており、問題なく動作しています。 –

2

おそらく、フュージョンキャッシュ(およびエクスプローラシェルのアイコンキャッシュ)に影響されている可能性があります。とにかく外部マニフェストは強く推奨されていませんが、プログラムを実行した後に追加すると、このような現象が発生することがよくあります。

簡単な説明については、Manifest and the fusion cacheを参照してください。

touch EXEを使用してキャッシュをリロードすることもできます。

+0

これはまさに私が見ていたシナリオと思われる - 外部マニフェストへの変更は、それは明白な理由のために働くだろう - 今私は理由を知っている! –

0

私は+ 9Xすべてのプラットフォームで動作するものマニフェストのみを発見しました。または全く動作します。私はすべての例、記事などを試しました。

それに追加されたバージョン番号などがそれを殺すでしょう。可能性のある例外はrequestedExecutionLevelの余分なパラメータです。これはOKです。レベルを変更することができ、uiAccessを追加することができます。それらは許容される。多数のバイナリカウントテストの後、私は、マイクロソフトが提供するマニフェストのこれらのかわいい追加機能が、単にウィンドウを作成するとさまざまなエラーが発生することを発見しました。 VB6 IDEでスタイルの適用

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> 
     <ms_asmv2:security> 
      <ms_asmv2:requestedPrivileges> 
       <ms_asmv2:requestedExecutionLevel level="asInvoker"> 
       </ms_asmv2:requestedExecutionLevel> 
      </ms_asmv2:requestedPrivileges> 
     </ms_asmv2:security> 
    </ms_asmv2:trustInfo> 
</assembly> 
-1

保存このテキストは、VB6.exeのと同じフォルダにvb6.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="Microsoft.VisualBasic.IDE" 
    type="win32" 
/> 
<description>Visual Basic 6 IDE</description> 
<dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" 
      name="Microsoft.Windows.Common-Controls" 
      version="6.0.0.0" 
      processorArchitecture="X86" 
      publicKeyToken="6595b64144ccf1df" 
      language="*" 
     /> 
    </dependentAssembly> 
</dependency> 
</assembly> 

ファイルの末尾にスペースを追加します。それが672バイトに達するまで(4の倍数)。その後

  1. ダウンロードリソースハッカーや管理者として
  2. ファイルを、それを開く> VB6.exeのを開く
  3. ファイル]> [新規空白スクリプト
  4. タイプ: 1 24 "vb6.exe.manifest"
  5. コンパイルスクリプト
  6. 保存
+0

IDEでしか動作しません –

+0

はい、これは最初の行に書いたものです。これは、コンパイルする前に、ビジュアルスタイルでデバッグ中のアプリケーションを表示することです –

+0

これは私が尋ねたものではありません –

関連する問題