WMIでのリモート接続


でった  2005-05-19 00:24:08  No: 89889

WMIでリモート端末の情報を取得したいのですが、以下の接続方法だと7割位の
端末でしか接続できず、残り3割は
UnauthorizedAccessException:アクセスが拒否されました。
というエラーによりアクセスが拒否されてしまいます。

拒否されるのはワークグループ環境でもAD環境でも同様のエラーで、
何が原因なのか解らずに途方にくれている状態です。
現状のソースを修正すれば回避できるのか、もしくは別の接続方法が
あるのか、どなたかご教示ください。

Public Function WMI_CONFIG(ByVal strHost As String, ByVal strUser As String, _
    ByVal strPass As String, ByRef strErrMsg As String) As Boolean
        ReDim WMI_ItemsList(17)
        Dim bRet As Boolean = True
        'ローカルPCのホスト名取得
        Dim strLcHost As String = Dns.GetHostName()
        Dim objScope As ManagementScope
        'リモートPCへの接続情報設定
        Dim conOptions As New ConnectionOptions
        With conOptions
            .Username = strUser
            .Password = strPass
            .Authentication = AuthenticationLevel.Default
            .Impersonation = ImpersonationLevel.Impersonate
        End With
        Dim strWMIPath As String = "\\" & strHost & "\root\cimv2"
        'ローカル端末かリモート端末かを判別
        If String.Compare(strLcHost, 0, strHost, 0, Len(strLcHost)) <> 0 Then
            'リモート用の処理
            objScope = New ManagementScope(strWMIPath, conOptions)
        Else
            'ローカル用の処理
            objScope = New ManagementScope(strWMIPath)
        End If
        Try
            '端末に接続
            objScope.Connect()
        Catch ane As ArgumentNullException
            strErrMsg = "エラー  ArgumentNullException:" & ane.Message
            bRet = False
        Catch se As Runtime.InteropServices.COMException
            strErrMsg = "エラー  COMException:" & se.Message
            bRet = False
        Catch ue As UnauthorizedAccessException
            strErrMsg = "エラー  UnauthorizedAccessException:" & ue.Message
            bRet = False
        Catch ex As Exception
            strErrMsg = "エラー  Exception:" & ex.Message
            bRet = False
        Finally
            objScope = Nothing
            conOptions = Nothing
        End Try


でった  2005-05-19 00:25:29  No: 89890

エラー箇所は、端末接続部分のobjScope.Connect()です。


オショウ  2005-05-19 02:27:50  No: 89891

WinXP で、SP2 とか導入されていませんか?
もしくは、ウィルス関係でソフトウェアのファイアウォールが入って
いるとか・・・

繋がらないマシンは、大抵RPCのポートが塞がっている為だと思います。
OS等環境を見直してください。

以上。


でった  2005-05-19 18:05:53  No: 89892

おしょう様
ファイアーウォールは、Symantec Client Firewallを全端末に
導入しています。これがかなりの曲者で導入時から正常に動作しない端末が
複数あり、一度正常にセットアップされても使用中にある日突然動作がおか
しくなったり等あり全然使い物にならないソフトになっている状態です。
繋がらない端末を何台かファイアーウォールを無効にして試してみようと
思います。

レスありがとうございました。

クライアント環境
Windows2000SP4+最新パッチ
WindowsXPproSP1+最新パッチ


でった  2005-05-20 00:34:15  No: 89893

情報が取得できない端末でポートの状態を調べてみました。
ファイアーウォールを無効にした状態で、
135番ポートRemote Procedure CallはステータスがListenなので
通信を受けられる状態なので問題ないと思います。

この状態でリモートで端末情報を取得すると、同じエラーで
アクセスが拒否されました  エラー番号:5
にて接続することができません。

多分クライアント側の何かが原因になっていると思うので、
引き続き調べてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加