誕生日にもらった意外なもの

□やりたいこと
 2台のXP環境で、WSHを使用してリモートスクリプトを実行させたい
 (ローカルサーバAからリモートサーバBでJBSを実行)

□事象
 サーバAのVBS(rmt_local.vbs)を起動したところ、
 CreateScript実行時に以下のエラーとなります。
 【エラーメッセージ】
 429 ActiveX コンポーネントはオブジェクトを作成できません。

□質問
 原因と対応方法を知りたい。
 下記の設定以外になにが影響しているのか?

□環境
【ローカルサーバA】
 OS:WindowsXP Professional Version 2002 SP3
 WSH:Version5.8
 ドメイン:WORKGROUP

【リモートサーバB】
 OS:WindowsXP Professional Version 2002 SP3
 WSH:Version5.8
 ドメイン:WORKGROUP

【スクリプト配置】
 ローカルサーバAのC:\TESTにのみスクリプト(1)と(2)を格納している
 リモートサーバBにはC:\TESTのフォルダのみ作成している

□設定関連
 ●ローカルとリモートで設定
  ファイアウォール設定(DCOM、wsdcript.exeを通す)
  ドメインプロファイルの設定でリモート管理の例外を許可
  実行ユーザをAdministratorsグループに追加

 ●ローカルのみ設定
  COMセキュリティのアクセス許可で「ANONYMOUS LOGIN」のリモートアクセスを許可

 ●リモートのみ設定 
  レジストリ:HKEY\LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
        の下のforceguest(文字列値)に0を設定

  レジストリ:HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings
        の下にRemote(文字列値) を作成して1を設定

  COMセキュリティのアクセス許可でEveryoneグループの「リモートアクセス」を許可

  COMセキュリティの起動許可でAdminstratorsグループの「リモートからの起動」と
  「リモートからのアクティブ化」を許可
================================================================
□スクリプト(1)
【rmt_local.vbs】
Option Explicit
On Error Resume Next

Dim objWshCtrl ' WshController オブジェクト
Dim strRemotePC ' リモートのコンピュータ名
Dim strScript ' 実行するスクリプトファイル
Dim objExecCmd ' 実行コマンド情報

Set objWshCtrl = WScript.CreateObject("WshController")
If Err.Number = 0 Then
strRemotePC = "B"
strScript = "rmt_remote.vbs"
Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC)
If Err.Number <> 0 Then
Set objExecCmd = Nothing
WScript.Echo "エラー: CreateScript " & Err.Description
WScript.Echo "異常終了しました。"
Else
WScript.Echo strRemotePC & " で " & strScript & " を実行します。"
objExecCmd.Execute
Do While objExecCmd.Status = 1
WScript.Sleep(100)
Loop
WScript.Echo "正常終了しました。"
End If

Else
WScript.Echo "エラー: CreateObject " & Err.Description
End If

Set objExecCmd = Nothing
Set objWshCtrl = Nothing

================================================================
□スクリプト(2)
【rmt_remote.vbs】
Option Explicit
On Error Resume Next

Dim objFSO ' FileSystemObject
Dim objFile ' ファイル書き込み用

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\TEST\test.log", 8, True)
objFile.WriteLine Now()
objFile.Close

Set objFile = Nothing
Set objFSO = Nothing

A 回答 (1件)

ワークグループ内のWindows XP Pro SP2同士で、WSHのリモート操作を行う(別のコンピュータにスクリプトを送って実行する)実験に成功した経験があります。

私は下記の@ITの記事を見て設定しました。

WshControllerオブジェクトの詳細
http://www.atmarkit.co.jp/fwin2k/operation/wsh09 …

wscript -regserver コマンドは実行されているでしょうか。Windows XPにはバグがあるようです。

http://support.microsoft.com/kb/311269/ja

その他「wscript regserver」で検索してみて下さい。

また、レジストリのforceguestは文字列値 REG_SZではなくDWORD値 REG_DWORDです。
    • good
    • 0
この回答へのお礼

SHIMAPEEさん
回答と指摘をありがとうございます

上記の内容+下記の設定をすることで
成功するようになりました。

リモート側で「ローカル セキュリティ設定」の
「ネットワークアクセス: ローカルアカウントの共有とセキュリティモデル」を「クラシック ローカルユーザがローカルユーザとしてログオンする」に設定

お礼日時:2010/03/15 10:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!