- 対象はドメインのメンバーコンピューターのみ
- 管理者権限が必要
- ファイアウォールを開ける必要がある
以下のグループポリシーを追加します。
Windows Vista, 7の場合
コンピューターの構成/ポリシー/Windows の設定/セキュリティの設定/セキュリティが強化された Windows ファイアウォール/セキュリティが強化された Windows ファイアウォール - LDAP://(略)/受信の規則/
新規作成して、リモートサービス管理をあける
Windows XPの場合
コンピューターの構成/ポリシー/管理用テンプレート/ネットワーク/ネットワーク接続/Windows ファイアウォール/ドメイン プロファイル/
Windows ファイアウォール: 着信リモート管理の例外を許可する
- 送信者が表示されない
Windows XP の場合はログオン画面の時、Windows Vista, 7 の場合は常に送信者が表示されません。
事情を知らない人へ突然送ったら驚かれると思うのでいたずらはやめましょう。
ドメイン コントローラーへの匿名アクセスを許可することで、たぶんいけるとは思いますが危険なのでおすすめしません。 - Windows 2000 は非対応
作成 2010.02.19
更新 2010.02.19
更新 2010.02.19
MSGコマンドを使ってクライアント端末にポップアップを表示する
使用上の注意
以下の制限があります。
コード
pc1, pc2 へメッセージを送信します。
Option Explicit
' Win32_ProcessStartup ShowWindow
Const SW_NORMAL = 1
Const SW_SHOWNOACTIVATE = 4
Const SW_MINIMIZE = 6
SendMessage "pc1","test message"
SendMessage "pc2","test message"
Sub SendMessage(TargetComputer, strMessage)
Dim objWMIService, objStartup, objConfig
Dim objProcess, strCommand, intProcessID, intReturn
Set objWMIService = GetObject("winmgmts:\\" & TargetComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_SHOWNOACTIVATE
Set objProcess = objWMIService.Get("Win32_Process")
strCommand = "msg * """ & strMessage & """"
intReturn = objProcess.Create (strCommand, Null, objConfig, intProcessID)
If intReturn = 0 Then
WScript.Echo TargetComputer & ":ok"
Else
WScript.Echo TargetComputer & ":FAIL"
End If
End Sub
補足
- 管理者権限で実行しなかったときに出るエラー
Microsoft VBScript 実行時エラー: 書き込みできません。: 'GetObject'
Microsoft VBScript 実行時エラー: リモート サーバ マシンが存在しないか、利用できません。: 'GetObject'Windows XP のには「ドメイン プロファイル」と「標準プロファイル」があります。 現在どちらのプロファイルを参照しているか確認するには、以下のコマンドを実行します。 実行結果の上段の「プロファイル」と記載されている行です。
また、パーソナル ファイアウォールが動作していないか確認してみてください。
netsh firewall show stateWindows 7, Vista は以下のコマンドで。
netsh advfirewall show currentprofile