- ベストアンサー
別PCのEXEを起動したいのですが・・・
こんにちは。質問させていただきます。 2台のPCA,Bがありまして、JAVAでAからBの中にあるEXEファイルを起動したいと思っています。 BのEXEはあるツールのOCXを使用して作成されていまして、 そのOCXはBの中にはありますが、Aには登録してありません。 BのPCからEXEを起動した場合は問題なく動作するのですが、 AのPCからexecメソッドを使用しBの中のEXEを指定して起動すると、 「コンボーネント '○○.ocx'、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。」 というエラーがでます。 AのPCからexecメソッドを使用した場合、指定したBの中のEXEをAのPCで実行しようとしているから、OCXが登録されていないAではエラーが出るということでしょうか? AのPCにはOCXを登録することをしたくない為、「B自身がEXEを起動する」というような動きにしたいのですがどのようにすれば良いのでしょうか。 文章が分かりにくいと思いますので、回答しにくい場合は指摘してください。 よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> A、BともにWEBサーバとしておかなくてはいけないでしょうか 必要ありません。 その代わり、RMIであば「 RMI レジストリサービスプロバイダ」を起動する必要があります。 RMIで検索すれば、簡単なプログラムと起動方法についてたくさん見つかると思います。 上記の場合、AがBのメソッドを呼び出しますので、Bがサーバーという位置づけ になります。
その他の回答 (5)
- dyna_1550
- ベストアンサー率34% (122/353)
corba か rmi でBの中に常駐するプログラムをJavaで組み、それを 呼び出すのが簡単では?
補足
回答ありがとうございます! まだ調べたばかりなのですが、CORBAやRMIで組もうと思った場合は A、BともにWEBサーバとしておかなくてはいけないでしょうか
- PED02744
- ベストアンサー率40% (157/390)
共有フォルダにしたのであれば、それはBの中のexeではなく、Aの中のexeとして動作しているので AにOCXがないと動作しませんね。 さて、ここで問題です。 Bで動作したとして、その結果はどうやってもらえばいいですか? Bでexeが動作したということは、Aはそのexeがどういう状況で動作しているかわかりません。 AをWEBアプリにするしかないかなあ。。。と思います。 B側のアプリをCGIとして動作させてしまえば、WEBアプリであるA側のアプリからCGIを叩けますし、結果も取得できますので。
お礼
CGIは使用したことがないのでネットで調べてみたいと思います 回答ありがとうございました!
補足
共有とした場合はAの中とみなしているのですね!知りませんでした。 現在やりたいことなのですが AをWEBサーバ、Bをあるツールのサーバーとしています。 Aはtomcatを使用しています。 クライアントCが、Aを見に行ってそこからBのEXEを起動させるという動きにしようとしています。 BのEXEなのですが、提供されているOCXがVC、VBにしか対応していないということでVB6で作成しています。 AからBのEXEを正常に起動出来たことが分かれば、あとはAの処理とは切り離すつもりでいます。
- PED02744
- ベストアンサー率40% (157/390)
Remote.exec じゃない Runtime.exec だ。。。Orz
補足
コメントありがとうございます。 現在は、BのPCのEXEが入っているフォルダを共有フォルダにしましてネットワークアドレス指定しています。 String[] command = {"cmd", "/c", "\\\\B\\共有名\\実行したいEXE.exe"}; Runtime.exec(command);
- PED02744
- ベストアンサー率40% (157/390)
JAVAではセキュリティ的に考えて、PC AからPC Bへのアプローチができると思えないのですが、どうやってexecで実行されたのですか? Remote.execにはリモートパス指定がないはずですが?
お礼
参考意見ありがとうございました! RMIの簡単なサンプルを作成し動作確認しました 今回はRMIを使用しようと思います