- PR -

Process.StartとShellの違い

1
投稿者投稿内容
会議室デビュー日: 2007/04/12
投稿数: 10
投稿日時: 2007-05-29 09:47
asp.net2005のwebアプリからWindowsアプリのバッチ処理を非同期にて呼び出すのに、Process.Startを使用していたのですが、とある事情により、呼び出しをShellに変えようということになりました。
社内の環境では、問題なく動作したのですが、客先の本番環境では、エラーが出てしまいます。調べてみたのですが、手がかりが見つかりません。

社内環境
 WindowsServer2003 Standard Edition SP2適用済

客先環境
 WindowsServer2003 R2 Standard Edition SP2適用済

.NETのRuntimeはどちらも2.0をインストールしています。


下記は、イベントビューアのエラーメッセージをコピーしたのものです。

1つ目(???.exeはWindowsアプリのEXE名)
Faulting application ???.exe, version 1.0.0.0, stamp 4653c097,
faulting module kernel32.dll, version 5.2.3790.3959, stamp 45d724bb,
debug? 0, fault address 0x0000bee7.

2つ目(???.exeはWindowsアプリのEXE名)
ハンドルされていない例外 ('System.TypeInitializationException') が ???.exe
[2664] で発生しました。 この例外の Just-In-Time デバッグに失敗し、次のエラーが発生しました:
アクセスが拒否されました。

詳細については、ドキュメントの Just-in-time デバッグのエラーについてのトピックを参照してください。

以上です。

どなたか、調べるための手がかりでもお教えいただければ幸いです。
よろしくお願いします。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-05-29 13:33
手がかりとしては、「アクセスが拒否されました。」ですよねぇ、きっと。

引用:

http://msdn2.microsoft.com/ja-jp/library/xe736fyk(VS.80).aspx

セキュリティに関するメモ
ファイル名やパス ノードに空白が含まれる場合は、パスとファイルの指定を引用符で囲まないとセキュリティ上の危険があります。上記の例では、パス ノード \\\\Program Files に空白が含まれます。たとえば不正な方法などにより、Program.exe という名前のプログラムが C:\\\\ にインストールされている場合、ファイルとパスの指定を引用符で囲まないと、Windows は display.exe ではなく、このプログラムを実行します。

セキュリティに関するメモ
Shell 関数にはアンマネージ コード アクセス許可が必要です。ただし、部分的に信頼されている状況でこの許可を使用すると、プログラムの実行に影響を及ぼす場合があります。詳細については、「SecurityPermission」および「コード アクセス許可」を参照してください。


この辺は大丈夫ですか?


---------追記
SHELL関数でTypeInitializationExceptionが発生するのってどんな場合かちょっと調べてみたのですが分かりませんでした。
@IT会議室の右上の小さな [検索] リンクから「SHELL関数」で検索すると、類似の件が出てくるので参考になるかも。

[ メッセージ編集済み 編集者: かめたろ 編集日時 2007-05-29 13:53 ]
1

スキルアップ/キャリアアップ(JOB@IT)