• ベストアンサー

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

  • Java
  • 回答数6
  • ありがとう数3

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

  • ベストアンサー
  • 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

  • exeの起動

    javaから***.exeを起動させているのですが、 作業ディレクトリを指定したいため、下記のメソッドを使っています。 exec(String[] cmdarray, String[] envp, File dir) Fileを設定すると、エラーになってしまうのですが・・・。 どうしたらよいのか分かりません。よろしくお願いします。 環境は、winNT、jdk1.3.1です。

  • VB5のEXEの起動時エラー

    VB5でのEXEで 従来 XP 2000 で 起動できていたものが XP 2000のあるPCでは次のエラーが出ます あるXP PCでは   &H80004002(-2147467262)システムエラー。インターフェイスがサポートされていません。 あるXP と 2000 では   コンポーネント'DBGRID32.OCXが適切に登録されていません。ファイルが存在しないかあるいは不正です。   対処法をご教示願います。  

  • 別マシンでEXEを処理する方法についてです。

     いつもお世話になっております。 【環境】Aマシン:Win2000 Server IE6.0      Bマシン:Win2000 Pro IE6.0 【開発言語】VC++ 上記の環境でAマシンからBマシンにあるbbb.exeを 起動(パラメータも渡す)して、Bマシンの中で処理を したいのです。  当初はAマシンにあるaaa.exeを起動して、その処理の 中でWinExec("\\\\B\\C\\bbb.exe" "パラメータ")を 使用していました。>bbb.exeはAマシンで処理が走って しまいました。  次にリソースキットにあるSOON.EXEを使用して、 Bマシンにあるbbb.exe起動を試みました。Bマシンの TaskSchedulerに登録されて、Bマシン内でbbb.exeが 起動され処理が走りました。しかしながら、パラメータが 渡ってくれないことがわかりました。>やり方を私が 知らないだけかもしれませんが・・・。  このような処理がどうしたらできるのかを教えて いただきたく投稿させてもらいました。 よろしくお願いいたします。

  • createprocessで起動させる別.exeをモーダルで起動したい

    createprocessで起動させる別.exeをモーダルで起動したい お世話になります。 VC++6.0 MFCで開発しております。 現在A.exeのあるボタンを押すとcreateprocessでB.exeを起動させるようにしております。 B.exeを起動後、A.exeの画面表示をクリックするとA.exeがアクティブになるのです。 それを、B.exeが終了しないとA.exeがアクティブにならないように変更したいのですがどのようにすればよいでしょうか? 現状は PROCESS_INFORMATION pi; STARTUPINFO si; si.cb=sizeof(si); CreateProcess(実行EXEパス,コマンドライン,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi); で起動しております。 また、実現不可能というお答えでもいいので教えていただければと思います。 お手数ですが何卒よろしくお願いします。

  • EXEの起動について

    プログラムの連続起動をバッチファイルで作成しています。 本体(A.EXE)を連続起動させるべくfor文でテキストファイルを読み込み引数を与えながら起動して、ということをしたいのですが、A.EXEは自動で終了するもののワケあって終了した状態を取得できません。 そこで監視(B.EXE)を実行してA.EXEの終了を待つプログラムを用意しました。 for文の中でA.EXE起動→5秒待ち→B.EXE起動(バッチは待ち状態)→A.EXE終了→B.EXE終了(バッチ待ち解除)→2回目のA.EXE起動…という流れを想定していますが、B.EXEが待ち状態にならずA.EXEが実行されてしまいます。 バッチの中身をコマンドプロンプトで実行するとB.EXEは待ち状態となるのですがバッチ実行すると待ち状態になりません。 なにが原因かわからず質問いたしました。 ご助力いただけると助かります。 以下はバッチ内容です(for文は除きます)。 ----------------- start C:\work\A.EXE timeout 5 start /w C:\work\B.EXE ----------------- よろしくお願いします。

  • 【VB2005】別のプログラムから別のプログラム起動

    "A"というVB2005で、作成したプログラムがありまして、 メインのフォームがあり、 そこにボタンがあります。 Shellの関数を使って、クリックイベントで、 指定したExe"B"を立ち上げます。 そのExe"B"は、VB2005で作成したオリジナルのプログラムです。 プロジェクトは別で作った物と考えてください。 Exe"B"を起動した画面を[フォーム1]と考えて、 ボタンがあり、クリックすると 別の[フォーム2]が表示するはずなのですが、 特にエラーも掴まずに、Showで開くことができません。 しかし、Exe"B"からダイレクトに起動させて ボタンをクリックしたら[フォーム2]が表示されます。 どうしたら、Exe"A"からExe"B"を起動して Exe"B"からフォーム2を呼び出すことができるか、 考えられる要因などをアドヴァイスして頂けたら助かります。

  • Windows上でexeを自動起動

    windowsOSでスタートアップにアプリを登録しておくと、 windows起動時に自動的にアプリケーションが立ち上がりますよね。 それと同じようにwindows上で何らかのアクションを受けた場合に 指定するexeを起動するようにしたいのですが、可能でしょうか? たとえば、windowsメッセンジャーを常駐させて、メッセージが届いた際に 指定するexeが起動されるようにしたいのです。

  • Shellコマンドで別のexeを起動するとフォーカスが別exeにいかない

    2本のEXE(AとB)があって、 AからBを呼び出して、Bの終了ボタンを 押すとAに戻るようなプログラムがあります。 Bを最前面にして起動しているのですが、 Bにフォーカスがいってくれません。 (Aに残ったままになっている?) ちなみにAもBもウィンドウスタイルは、 青いバーが出ている状態(動かせる状態)です。 Bが起動している間、Aはその後ろでまっている ようなイメージです。 どうやったらフォーカスを渡すことが できるでしょうか? <条件> Bのプログラムは修正することができません。 Aのプログラムは自由に修正できます。 どなたか教えて下さい。

  • レジストリ登録について

    教えてほしいことがあります。 VBで作成したOCXのレジストリ登録についてです。 Regsvr32を使用せずに、 そのOCXを貼り付けたEXEを起動することで、 レジストリ登録が出来ているようなんですが、 これって正攻法なんでしょうか。 そういうものなんでしょうか。 98のPCではレジストリ登録を行わないとExeの実行はできませんでした。ですが、XPとVistaではできるようなんです。 Vistaの場合レジストリ登録が結構大変なので、Exeを起動することで対応させようかと思っております。 何かご存知の方、いらっしゃいましたら是非ご教授ください。 よろしくお願い致します。

  • サーバー間のEXE起動

    すいません、宜しくお願いします。 開発言語 C# VS2008使用 今試しで画面を開発中なのですが、 Aサーバー Bサーバー Cサーバー と3つのサーバーがありまして、 Aサーバーに配置している画面のボタンを押された場合、 B、CサーバーのEXEを起動させると言う感じに構想考えています。 (すいません、セキュリティーとか抜きにして・・・) Aサーバーのタスク書き換え or Exe起動はうまくいくのですが、 他サーバーに同様に同じような事実行すると うまくいきません・・・ そもそも他サーバーのEXEを起動する事は出来ないのでしょうか??? 暇な時にでも付き合って頂けると幸いです。

専門家に質問してみよう