• ベストアンサー

別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を起動する」というような動きにしたいのですがどのようにすれば良いのでしょうか。 文章が分かりにくいと思いますので、回答しにくい場合は指摘してください。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.6

> A、BともにWEBサーバとしておかなくてはいけないでしょうか 必要ありません。 その代わり、RMIであば「 RMI レジストリサービスプロバイダ」を起動する必要があります。 RMIで検索すれば、簡単なプログラムと起動方法についてたくさん見つかると思います。 上記の場合、AがBのメソッドを呼び出しますので、Bがサーバーという位置づけ になります。

AkiraNana
質問者

お礼

参考意見ありがとうございました! RMIの簡単なサンプルを作成し動作確認しました 今回はRMIを使用しようと思います

その他の回答 (5)

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.5

corba か rmi でBの中に常駐するプログラムをJavaで組み、それを 呼び出すのが簡単では?

AkiraNana
質問者

補足

回答ありがとうございます! まだ調べたばかりなのですが、CORBAやRMIで組もうと思った場合は A、BともにWEBサーバとしておかなくてはいけないでしょうか

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

答えはすでに書いてますが。 BのアプリをCGIとして動かせばよいのでは? BにIISサーバ等WEBサーバを立てて、http://Bサーバ/CGI/b.exe をAから呼べばいいだけではないんですか? CGIってperlかPHPの事だと思ってる?(笑)

AkiraNana
質問者

お礼

CGIの事よく調べもしないで返信してしまいまして申し訳ありません(涙) CGIがどんなものなのか調べてきます

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

共有フォルダにしたのであれば、それはBの中のexeではなく、Aの中のexeとして動作しているので AにOCXがないと動作しませんね。 さて、ここで問題です。 Bで動作したとして、その結果はどうやってもらえばいいですか? Bでexeが動作したということは、Aはそのexeがどういう状況で動作しているかわかりません。 AをWEBアプリにするしかないかなあ。。。と思います。 B側のアプリをCGIとして動作させてしまえば、WEBアプリであるA側のアプリからCGIを叩けますし、結果も取得できますので。

AkiraNana
質問者

お礼

CGIは使用したことがないのでネットで調べてみたいと思います 回答ありがとうございました!

AkiraNana
質問者

補足

共有とした場合はAの中とみなしているのですね!知りませんでした。 現在やりたいことなのですが AをWEBサーバ、Bをあるツールのサーバーとしています。 Aはtomcatを使用しています。 クライアントCが、Aを見に行ってそこからBのEXEを起動させるという動きにしようとしています。 BのEXEなのですが、提供されているOCXがVC、VBにしか対応していないということでVB6で作成しています。 AからBのEXEを正常に起動出来たことが分かれば、あとはAの処理とは切り離すつもりでいます。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

Remote.exec じゃない Runtime.exec だ。。。Orz

AkiraNana
質問者

補足

コメントありがとうございます。 現在は、BのPCのEXEが入っているフォルダを共有フォルダにしましてネットワークアドレス指定しています。 String[] command = {"cmd", "/c", "\\\\B\\共有名\\実行したいEXE.exe"}; Runtime.exec(command);

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

JAVAではセキュリティ的に考えて、PC AからPC Bへのアプローチができると思えないのですが、どうやってexecで実行されたのですか? Remote.execにはリモートパス指定がないはずですが?

関連するQ&A