スキップしてメイン コンテンツへ

 none
exeに付随するmanifestでwin XPでの実行ができない?(という理解でよい?) RRS feed

  • 質問

  • 今更、Windows XPを使うな、話題にするな、という話はちょっと横においておいて・・・、

    exeファイルに付随するmanifest(Visual Studioでexeファイルを読み込むとRT_MANIFESTと表示される部分)において、<suportedOS Id=   />という項目が何種類か並んでいるとき、当然、Windows XPについては、Idは定義されていないから、現れないわけです。

    このようなexeファイルは、Windows XPでは実行できない、という理解でよろしいのでしょうか?

    Windows XP側がmanifestを読んで拒絶しているわけではないと思いますが、一方で、Windows XPには無いDLLに依存するなどの状況になる、ということでしょうか?

    ーーーーーーーーーーーーーーーー

    32bit環境向けに配布されているとあるexeファイルが、Windows XP(32bit)上で動かない状況が発生しており、お尋ねする次第・・・。「win32アプリケーションではない旨」が表示されて実行されません。

    2019年12月25日 4:34

回答

  • すでに指摘があることと重複するかもしれませんが、manifest の supportedOS は、あくまで「この OS に対応しています」という宣言であり、実行できる・できないを制御するものではありません。

    実行できない理由は PE ヘッダーの subsystem version が 6.00 となっているので、5.01 の Windows XP では実行できないということです。

    >dumpbin mpam-fe.exe /headers
    (略)
    OPTIONAL HEADER VALUES
                 10B magic # (PE32)
    (略)
               10.00 operating system version
               10.00 image version
                6.00 subsystem version
                   0 Win32 version
    (略)

    • 回答としてマーク 外池 2019年12月26日 4:06
    2019年12月25日 13:26
    モデレータ
  • 配布元に尋ねるべきではないでしょうか? もし一般公開されているファイルであれば、本質問に含めることで何か情報が得られるかもしれません。

    なお、suportedOSはWindows Vistaからの機能です。Windows XPでは当該要素を参照しないため、記述の有無は何も影響を与えません。

    • 編集済み 佐祐理 2019年12月25日 9:31
    • 回答としてマーク 外池 2019年12月27日 1:53
    2019年12月25日 9:30

すべての返信

  • XP は .NET Framework 4.0 までですが、4.5 で配布したりしていないでしょうか?

    「.NET Framework のシステム要件」
    https://docs.microsoft.com/ja-jp/dotnet/framework/get-started/system-requirements

    2019年12月25日 8:24
  • manifestは、.Net Frameworkだけの概念ですか? win32ネイティブなexeにはない概念ですか?

    実は、Microsoft殿が配布しているexeファイルなんですが・・・、32bit環境のMicrosoft Security Essential用の定義ファイル、ということだけ示されていて、OSや.Net Frameworkの要件は何も書かれていないんです。

    2019年12月25日 8:51
  • 配布元に尋ねるべきではないでしょうか? もし一般公開されているファイルであれば、本質問に含めることで何か情報が得られるかもしれません。

    なお、suportedOSはWindows Vistaからの機能です。Windows XPでは当該要素を参照しないため、記述の有無は何も影響を与えません。

    • 編集済み 佐祐理 2019年12月25日 9:31
    • 回答としてマーク 外池 2019年12月27日 1:53
    2019年12月25日 9:30
  • デバッガ上から起動させてトレースしていけば、どこで弾かれているのか確認できる可能性があると思います。

    ちなみに、そのマイクロソフト社の exe って、具体的になんでしょうか?

    2019年12月25日 9:34
  • 佐祐理様、なるほど、Windows XP上で走るときは関係ないはずなのですね。ありがとうございます。

    元ネタは、これです。

    小生が遭遇した事象、そのままです。配布元からの回答がサポートされているOSで動くかどうかは関知するが、サポートしていないOSでどうかは関知しません、という趣旨のもので、まぁ・・・、荒れてます。

    昨日24日、さらに新しいMSEの定義ファイルがリリースされたようなので、それを試してみることにします。

    2019年12月25日 11:27
  • お馬鹿様(いつも書きづらい・・・)

    ここにある

    Microsoft Security Essentialsの32bit環境用の定義ファイルです。ダウンロードするリンクは、

    これになります。exeファイルが直に落ちてきます。

    2019年12月25日 11:30
  • すでに指摘があることと重複するかもしれませんが、manifest の supportedOS は、あくまで「この OS に対応しています」という宣言であり、実行できる・できないを制御するものではありません。

    実行できない理由は PE ヘッダーの subsystem version が 6.00 となっているので、5.01 の Windows XP では実行できないということです。

    >dumpbin mpam-fe.exe /headers
    (略)
    OPTIONAL HEADER VALUES
                 10B magic # (PE32)
    (略)
               10.00 operating system version
               10.00 image version
                6.00 subsystem version
                   0 Win32 version
    (略)

    • 回答としてマーク 外池 2019年12月26日 4:06
    2019年12月25日 13:26
    モデレータ
  • Azuleanさま、明快にご説明いただき、ありがとうございました。納得です。
    2019年12月26日 4:07
  • 動かなくて困っていることは理解できますが、投稿された質問はmanifestについてではありませんか? 質問と別の内容だけが回答としてマークされるのは遺憾です。
    2019年12月27日 1:41
  • 佐祐理様。ごもっともです。申し訳ありません。

    困ってるというより、興味本位だったもので、自分が納得して満足しちゃってました。


    • 編集済み 外池 2019年12月27日 1:55
    2019年12月27日 1:54