0

以下のコードは、UNC パスからローカル パスを返します。

strPath = "\\pc100\d"

strPath = Replace(strPath, "\\", "")

arrPath = Split(strPath, "\")

strComputer = arrPath(0)
strShare = arrPath(1)
Wscript.Echo strComputer 
Wscript.Echo strShare 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_Share Where Name = '" & strShare & "'")

For Each objItem in colItems
    Wscript.Echo objItem.Path
Next

しかし、それは私のPCのパスに対してのみ機能します。つまり、PC 名が pc1 の場合、\\pc1\D\ を渡すと D:\ が返されます。

しかし、\\pc100\d\ などのネットワーク pc パスを指定すると、以下に示すようなエラーが発生します。

---------------------------
Windows Script Host
---------------------------
Script: D:\Desktop\New Text Document.vbs
Line:   12
Char:   1
Error:  Permission denied: 'GetObject'
Code:   800A0046
Source:     Microsoft VBScript runtime error

---------------------------
OK   
---------------------------

しかし、\\pc100\d\ は共有されているドライブです。両方の PC でファイアウォールがオフになっています。PC でリモート プロシージャ コール (RPC) サービスと WMI が実行されています。そのネットワーク フォルダに対する完全なアクセス許可を持っている必要があります。

4

2 に答える 2

1

PC100 の WMI/ManagementScope にアクセスできません。

于 2013-07-30T09:18:08.423 に答える
1

代わりに、次のように WMI オブジェクトを取得する必要がありますか?:

Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2")

出典: MSDN

于 2013-10-16T13:54:45.077 に答える