2013-07-30 274 views
0

下面的代码返回来自UNC路径的本地路径。从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 

但它只适用于我的电脑的路径。这是如果我的电脑名称是pc1,那么如果我通过\\ pc1 \ D \然后它返回D:\

但是,如果我给一个网络PC路径如\\ pc100 \ d \那么它会给出错误下面

--------------------------- 
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 \是驱动器,它shared.Firewall是关闭的PC.Remote过程调用(RPC)服务和WMI都在PC上运行那么,为什么这给错误。我该如何纠正它。我对该网络文件夹有完全的权限。

回答

1

您无权访问PC100上的WMI/ManagementScope。

+0

ok.But可以将它通过使一些或更改设置来实现? –

+0

如果您使用的是AD,那么您的帐户需要是属于PC100管理员(或超级用户)组的成员。如果您使用Workgroups,那么我认为您只需要在PC100上创建一个与您的名称相同的帐户并将其添加到该机器上的Admin/PU组中 – Adrian

+0

我正在使用workgroup.But但是我在两个帐户中都创建了相同的帐户PC.but仍然得到相同的错误 –

1

你必须让你的WMI对象是这样,而不是?:

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

来源:MSDN