Windowsのビットサイズに基づいてexeを実行するにはどうすればよいですか?


0

私は2つの.exeファイルを持っています、そして私はWindowsビットサイズに基づいてそれらの1つを走らせることができる1つのプログラムを作りたいです(すなわち、 program1.exe 64ビットで実行している場合 program2.exe 32ビットの場合)誰が私が見始めるべきかを知っていますか?


32ビットか64ビットですか?
Keltari

@ケタリはい。より明確にするために質問を編集しました。
yiwei

あなたが書いたこれらのプログラムは何ですか?
Keltari

いいえ。彼らはインストーラです、そして私はちょうどどのバージョンのwindowsがインストールされているかに基づいてそれらを実行したいと思います
yiwei

回答:


1

あなたはあなたのランチャーとして簡単なwindows Powershellスクリプトを使うことができます。

PSから自分のアーキテクチャを見分ける方法は次のとおりです。 http://depsharee.blogspot.com/2011/06/how-do-detect-operating-system.html

これは、IntPtr構造体の長さをバイト数で調べることです。 4 => 32b、8 =>。 64b。

あなたが本当にDotNetで、exeファイルが欲しいなら、あなたはその64bかどうかを決定するためにこのチェックを使うことができます:

BOOL Is64BitWindows() {
 #if defined(_WIN64)
  return TRUE;  // 64-bit programs run only on Win64
 #elif defined(_WIN32)
  // 32-bit programs run on both 32-bit and 64-bit Windows
  // so must sniff
  BOOL f64 = FALSE;
  return IsWow64Process(GetCurrentProcess(), &f64) && f64;
 #else
  return FALSE; // Win64 does not support Win16
 #endif
}

詳細はこちら: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/01/364563.aspx


このスクリプトはどのバージョンのWindowsでも実行できますか?
yiwei

1
それがPowerShellを実行するならば、はい。または.netアプローチを試してください。
Frank Thomas

どんなスクリプト?答えの中のコードはc#です。
Ramhound

@ Ramhound、blogspotへのリンク内のスクリプトのいずれか。それらはWMIクエリを含むいくつかのメソッドをカバーしています。私はIntPtrがもっとも優雅だと思います。
Frank Thomas

0

いつでも確認できます %programfiles(x86)% 環境変数Windows 64ビットマシンの場合は "Program Files(x86)"へのパスを返し、64ビットマシンではない場合は定義されずに "%programfiles(x86)%"を返します。

あなたはこれをバッチ、PS、.Net、またはあなたが望むものなら何でもでチェックすることができます。 :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.