1台のパソコンで10台の端末を管理しているのですが、管理端末上から操作して各端末にプログラム(exeファイル)を起動させたいのですが可能でしょうか?
(LANで接続されすべて同じワークグループに属しています)
毎朝1台1台プログラムを起動させるのが面倒なので、管理端末上から出来ないものかと、2ヶ月前にVBを始めたばかりです。
VBでリモート実行させたい、という話でしょうか?
とりあえず、WMIについて勉強するとか。
単にリモート実行したい、という話なら板違いです。
とりあえずこのへんを読んでみては?
http://homepage2.nifty.com/winfaq/remotedesktop.html
WMIについて勉強を始めました。
ですが、職場の環境では、サンプルソースを試してみてもエラーが出て利用できないようです。
OSはWIN2000、VB6.0を使用しています。
リモートでデスクトップを操作するのではなく、1つの端末で起動させたプログラム上から実行ボタンを押して、複数の端末へ情報を送り別々のプログラムを実行させたいというものです。
WMIやリモートツールを使わなくとも
簡単に手っ取り早く実現したかったら、
例えば、一案として、
1.ランチャープログラムを作り、各マシンにインストールし、
スタートアップに登録し、マシン起動時に実行するようにしておく。
2.各マシンのランチャーは、サーバ上の特定のフォルダを定期的に監視し、
自分向けのテキストファイルを見つけたら、それを開いて、
中に書かれた指示に従って動作する。
3.他の端末に何らかの動作をさせたいときは、指示テキストを
対象マシン向けファイル名で作り、サーバ上の特定のフォルダに置く。
同一LAN内ならこれだけでも目的の動作は可能かと。
要は発想の問題でしょう。
mail,FTP,Webサーバなどを使えばもう少し柔軟なシステムが構築できますが。
私もちょうど同じ事をAPIでどうにかできないかな〜。
と考えていたところです。
WMIを使用してリモートでアプリを起動する事はできますが、
Win2K(SP3)以降では、画面表示が出来ないですよね?
これを逃れる方法があればいいんですが。。。
ちなみにリモートアプリAを起動して、
Aアプリ内でBアプリを自動起動してもBアプリも非表示でした。
非表示でもよければWMIのサンプルを載せますが、
その前にあなたの持っているサンプルもその環境なら動くハズです。
参照設定が必要か、
『Wscript.Echo』をそのまま使用しているかのどちらかでしょう。
やはりSayさんのいうような方法しかないのでしょうか?
もっと直接的に操作したいんですけどね。
っていうか、毎朝っていうのが気になる。
スタートアップに登録だけで済む事のような気が。。。
>>ぴろあきさん
参照設定が必要でした。
VBを立ち上げてある端末でのプログラムを指定しての機動は出来ましたが、
他の端末指定をしてのプログラムの起動は知識が無くて出来ませんでした。
Sampleソース、よろしければ載せていただけませんでしょうか?参考にしたいと思います。
毎朝操作するというのは、職場の方針上「節電」なのでサーバー以外シャットダウンしなければならないのです。
現在、管理する端末が10台から30台に増えました。
>>Sayさん
そのような方法もあるのですね。もう少し頑張って見てだめな場合そちらを考えます。
出張に出ていてレスが遅くなってしまったm(__)m
まだ見ているでしょうか。
Dim strcomputer As String
Dim objWMIService As Object
Dim colShares As Object
Dim Pid As Long
Dim Ret As Long
strcomputer = InputBox("コンピュータ名を入力してください", "入力", "127.0.0.1")
Set objWMIService = GetObject("winmgmts://" & strcomputer & "/root/cimv2")
Set colShares = objWMIService.get("Win32_Process")
Ret = colShares.Create("notepad.exe", Null, Null, Pid)
MsgBox "メモ帳を起動しました" & vbCrLf & " PID = " & CStr(Pid), vbInformation, "確認"
相手PCにユーザー登録されていないと、GetObjectで「書込みできません」のエラーが出るかもしれません。
また、先述のとおり起動したアプリは表示されません。
起動したアプリから起動したアプリも表示されません。
>スタートアップに登録だけで済む事のような気が。。。
この発言の意味は、
PC起動後、「毎回」「同じ」アプリを起動させたいだけならば、
スタートアップにそのアプリを登録すればいいだけで、
プログラムを組む必要など全く無いという事です。
>>ぴろあきさん
ありがとうございます。
確かにスタートアップに登録すれば簡単なのですが、プログラムの仕様上、自動起動は避けたいのです。
画面が出てくれれば問題解決なんですが・・・難しいですね
プログラムを起動する
ActiveX.DLLを作成します。
それを各端末に配布します。
管理端末からそれぞれの端末に対して
CreateObjectでコールします。
>>あんさん
>プログラムを起動する
>ActiveX.DLLを作成します。
これはどのように作成すればいいのでしょうか?
>管理端末からそれぞれの端末に対して
>CreateObjectでコールします。
現在PC名を自動取得するように設定していますので
CreateObjectでPC名を指定してコールさせればいいのでしょうか?
Createobject PC1-001 といった感じでしょうか?
横槍入れてすみません・・・
ご使用になる環境(OS)は?
ActiveX EXE 等を利用する場合、RPC(リモートプロシージャコール)
で、連結されます。ですが、マイクロソフトはセキュリティーパッチ
で、RPCを防御するようになりました。
当然、パーソナルファイアウォールとかのウィルス侵入監視ソフトと
かを入れている場合も同様に防御され、他マシンからのプログラム起
動は、行なえない仕様になっています。
OSやWindowsUpdate、ウィルス関係の設定如何によっては、RPC
を使えるようになり、上記の連携も可能になります。ですが、それら
の脆弱性をついたウィルスも活動可能になる為、注意が必要です。
簡単に機能を実現するには、RPCは非常によい方法なのですが・・・
Winsock.OCXを使って、TCP/IP通信させる方法の方が、今後のセキュ
リティーパッチの影響も少ないとは思いますが・・・
WinXP SP2 の場合は、セキュリティーセンター内の例外に今回のソフト
を登録しないと通信はできませんネ〜、尚、ActiveX でも同様です。
※ ActiveX 関連の書籍は・・・VB5から使用可能になっていますの
で、随分、昔のものですが・・・もし入手可能なら・・・
VisualBasic 5.0 で作る ActiveX コンポーネント
ソシム株式会社 ISBN4-88337-049-6 \ 2,900.-
ご参考までに・・・
以上。
>>岡田 之仁さん
ありがとうございます。
使用しているOSはWIN2000です。
ウィルスソフトは「マカフィー」が入っていますが、外部インターネットにはつなげない環境です。(今後もつなげる予定はなし)
ネットと書店で調べてみて買えそうな場合購入してみます。
>>Winsock.OCXを使って、TCP/IP通信させる方法の方が、今後のセキュ
リティーパッチの影響も少ないとは思いますが・・・
と言いますと?
WinSockを使用することで無事解決しました。
ありがとうございました。
各端末に待機プログラム(スタートアップに登録)を待機させ、管理端末から各端末に情報を送ることでプログラムを起動するようにしました。
ツイート | ![]() |