以下のコードは、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 が実行されています。そのネットワーク フォルダに対する完全なアクセス許可を持っている必要があります。