トップ回答者
アプリケーションが32bitで起動したり64bitで起動したりする

質問
-
お世話になります。
以下環境にてアプリケーションを実行すると、プロセスの起動状態が32bit起動になったり64bit起動しており、原因が分からずに困っております。
--------------------------------------------------------------------------------------------------------
OS
Windows Server 2012 R2
アプリケーション
VB.net(VS2012)にて「Any CPU、32bit優先なし」を設定しビルドした実行ファイル
実行方法
上記のアプリケーションを実行するスクリプトファイル(JScript)を作成し、スタートアップに配置してログオン時に起動する。
スクリプトファイルはWindows Script Encoderを用いてエンコード処理を実施。
アプリケーションの実行はWScript.ShellオブジェクトのRunメソッドを使用。
--------------------------------------------------------------------------------------------------------
64bit起動が正常動作なのですが、稀に32bitで起動してアプリケーションが動かなくなります。(起動状態はタスクマネージャにて確認)
少ない情報で申し訳ないですが、32bitで起動してしまう原因について、何か心当たりのある方はいらっしゃいますでしょうか。
よろしくお願い致します。
- 編集済み まさん 2016年1月27日 10:49
回答
-
まさん さん、
可能なら・・・
「x64」 でビルドして、Windows Server 2012 R2 で実行し、
その結果を 「Any CPU 32bit 優先」でビルドされた場合と比較なさってはいかがでしょう?
# サーバー用で、(たぶん)社内/特定ユーザー用でしょうから、
コンパイルオプションを変更して運用しても問題なし・・・だろう、と思って書きました。
以上です。- 編集済み Ashidacchi 2016年1月27日 11:40
- 回答の候補に設定 miyamamMicrosoft employee 2016年3月28日 3:35
- 回答としてマーク 佐伯玲 2016年4月11日 4:21
-
まさん 様
しつこくて申し訳ありません。
リビルド等を避けたい(現在のアプリケーションのままで使いたい)ということで、かつ遅延起動が必要ならば、タスクスケジューラの利用はとても良いアイデアだと思います。
が、タスクスケジューラーによる実行でも、スクリプトを利用した実行と同じ結果になる可能性があると思います。動作OSが Windows Server 2012 R2 であるところから、コンパイルオプションで対象の CPU を「x64」に決めうちしてはダメなのでしょうか?
いずれの方法を採られるにせよ、成功をお祈りいたします。
以上
- 編集済み Ashidacchi 2016年1月28日 7:19
- 回答の候補に設定 miyamamMicrosoft employee 2016年3月28日 3:36
- 回答としてマーク 佐伯玲 2016年4月11日 4:21
すべての返信
-
まさん さん、
可能なら・・・
「x64」 でビルドして、Windows Server 2012 R2 で実行し、
その結果を 「Any CPU 32bit 優先」でビルドされた場合と比較なさってはいかがでしょう?
# サーバー用で、(たぶん)社内/特定ユーザー用でしょうから、
コンパイルオプションを変更して運用しても問題なし・・・だろう、と思って書きました。
以上です。- 編集済み Ashidacchi 2016年1月27日 11:40
- 回答の候補に設定 miyamamMicrosoft employee 2016年3月28日 3:35
- 回答としてマーク 佐伯玲 2016年4月11日 4:21
-
Ashidacchi様
ご回答ありがとうございます。
おっしゃる通り特定ユーザ用のシステムです。
対応策はご提案頂いた方法など案はありまして、改善の兆しも見えてはいるのですが、原因がさっぱりなのです・・・
私の認識では「Any CPU 32bit優先なし」でビルドしたアプリケーションを64bit環境で起動すれば通常は64bit起動するものだと認識しております。調査している中で32bitコンソールを立ち上げてアプリケーションを実行したり、CorFlagsセクションを書き換えれば32bit起動するようですが、そういったことも一切しておりません・・・
現状、スクリプトを手で実行すると32bit起動することはなく、あくまでスタートアップ時のみの症状となっております。
少々お手上げな状態です・・・
- 編集済み まさん 2016年1月28日 1:40
-
Ashidacchi様
ご返信ありがとうございます。
スクリプトを利用している理由ですが、過去の遺物で、作成した明確な意図は分からない状況です・・・
スクリプト自身で行っている処理は、「一定時間スリープしてからアプリケーションを実行する」となっております。
恐らく遅延起動が目的で作られたものだと思います。
このスクリプトも怪しいなと踏んでおりまして、Ashidacchi様が仰るようにスクリプトの利用を廃止し、単純にアプリケーションのショートカットを配置する対応でも大丈夫だろうと考えております。ただし遅延起動させる必要があるため、スタートアップではなくタスクスケジューラーを利用しようと検討中です。
アプリケーションのビルド方法がまずいのか、スクリプトの利用がまずいのか、スタートアップの起動方法がまずいのか、少しでも手がかりがあれば良いのですが、悩ましい問題です・・・
- 編集済み まさん 2016年1月28日 9:27
-
まさん 様
しつこくて申し訳ありません。
リビルド等を避けたい(現在のアプリケーションのままで使いたい)ということで、かつ遅延起動が必要ならば、タスクスケジューラの利用はとても良いアイデアだと思います。
が、タスクスケジューラーによる実行でも、スクリプトを利用した実行と同じ結果になる可能性があると思います。動作OSが Windows Server 2012 R2 であるところから、コンパイルオプションで対象の CPU を「x64」に決めうちしてはダメなのでしょうか?
いずれの方法を採られるにせよ、成功をお祈りいたします。
以上
- 編集済み Ashidacchi 2016年1月28日 7:19
- 回答の候補に設定 miyamamMicrosoft employee 2016年3月28日 3:36
- 回答としてマーク 佐伯玲 2016年4月11日 4:21