- PR -

APサーバーからネットワーク越しのEXEをキックしたい。

投稿者投稿内容
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-05-19 20:21
お世話になっております。

実はWEBサービス越しのEXE起動で悩んでおります。

構成は
・A クライアントPC(Windows XP PRO)
・B APサーバー(2003 server Enterprise Edition)
・C DB/ファイルサーバー(Windows 2000)
です。

「A」から「B」のWEBサービスにリクエストして
「B」が「C」に存在する共有フォルダの中で

@フォルダ内に存在するファイルの確認
Aファイルをフォルダ内に作成する
Bフォルダ内に存在するEXEを実行する。

ということを試しており、@、AはWEB.CONFIGを用いた偽装によって実現しております。
しかし、Bの処理を行おうとすると、APサーバー「B」のディスプレイにポップアップで

「アプリケーションを正しく初期化できませんでした(0xc0000022)」

と出力されてしまい、「C」に存在するEXEが起動されません。

エラーメッセージを検索にかけて調べたところ、
EXEを実行する権限が与えられていないユーザーで実行しようとしている。
との情報がありましたが、@、Aは同じ共有フォルダ内に存在して実現しており
EXEにも同様のユーザーによるフルアクセス権限が与えられています。

どうか、知恵をお貸しくださいます様、宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-05-20 21:42
 実行しようとしているアプリケーションが、COM 登録されていたりしませんか?dcomcnfg で実行権を与える必要があるとか。
# Excel とか
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-20 22:30
引用:

しかし、Bの処理を行おうとすると、APサーバー「B」のディスプレイにポップアップで

「アプリケーションを正しく初期化できませんでした(0xc0000022)」

と出力されてしまい、「C」に存在するEXEが起動されません。



その .EXE が VB.NET や C# などで書かれた、いわゆる「.NET アプリケーション」の場合、デフォルトではセキュリティの関係で実行できないように設定されています。

C の共有フォルダ上のアプリケーションを信頼するよう、B の [管理ツール]-[Microsoft .NET Framework x.x Configuration] で設定を行う必要があります。
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-05-21 22:21
お返事頂きまして、どうもありがとう御座います!

Jittaさん>
COMコンポーネントについて知識が殆ど無く、調べてみたところ

[.NET からの COM コンポーネントの呼び出し]
http://www.microsoft.com/japan/msdn/net/upgrade/callcomcomp.asp

に導入手順が載っていたので読みました。
ですが、この様にCOMコンポーネントを導入することを意識的に
行わなければ実現しないならば、COMの設定をしてしまっている事
は無いと思っております。ありがとう御座います。

渋木宏明(ひどり)さん>
実行する側のマシン(APサーバ[B])にて
[Microsoft .NET Framework x.x Configuration]の設定も用いて
ネットワークリソースのEXEの実行を許可しないと駄目だということですね。
ありがとう御座います。試してみます。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-21 23:13
引用:

ですが、この様にCOMコンポーネントを導入することを意識的に
行わなければ実現しないならば、COMの設定をしてしまっている事
は無いと思っております。ありがとう御座います。



「設定してしまっている」からNGとは限りません。
「設定を忘れている」からNGかもしれません。

いずれにしろ、DCOM の設定が必要なのは、そのアプリケーションが DCOM/COM 対応(=というか、正確には OLE オートメーションサーバー。代表的なのは Office シリーズ)の場合です。

引用:

実行する側のマシン(APサーバ[B])にて
[Microsoft .NET Framework x.x Configuration]の設定も用いて
ネットワークリソースのEXEの実行を許可しないと駄目だということですね。



駄目なのは、そのアプリケーションが .NET アプリケーションである場合です。

最初の投稿から問題のアプリケーションの素性を読み取ることが出来ないので、「考えられるパターン」を挙げました。
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-05-22 09:59
お返事いただきまして、ありがとう御座います。

引用------------------------------------------
最初の投稿から問題のアプリケーションの素性を読み取ることが出来ないので、「考えられるパターン」を挙げました。
----------------------------------------------
すみません。Cに存在するEXEはC#で開発したコンソールアプリケーションです。
HELLOWORLDレベルの簡単なソースです。

[Microsoft .NET Framework x.x Configuration]↓
[コード アクセス セキュリティ ポリシー]↓
[アセンブリの信頼]
で良いのでしょうか。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-22 11:08
引用:

すみません。Cに存在するEXEはC#で開発したコンソールアプリケーションです。
HELLOWORLDレベルの簡単なソースです。



C# で開発したものなら、(今のところ)DCOMCFG は関係ありません。
.NET ランタイムのセキュリティ制限にのみ制約を受けます。

引用:

[Microsoft .NET Framework x.x Configuration]↓
[コード アクセス セキュリティ ポリシー]↓
[アセンブリの信頼]
で良いのでしょうか。



.NET のバージョンは何ですか?
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-05-22 11:20
渋木宏明(ひどり)さん>
お返事ありがとう御座います。

.NETのバージョンは[1.1.4322]です。

宜しくお願い致します。

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