您好,RB。在此需要马上澄清一个事实:我们可以告诉您如何临时从计算机删除 C$ 共享。但是,每当 Server 服务停止后再重新启动,或者重新启动计算机时,都将自动重新创建共享。为什么会是这样?这就是这些所谓的“管理共享”的工作方式。它们有点像蒲公英或流浪猫:您一旦收留了它们,就无法真正摆脱它们。
这就是说,下面的脚本至少会暂时删除 C$ 共享:
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colShares = objWMIService.ExecQuery _
("Select * from Win32_Share Where Name = 'C$'")
For Each objShare in colShares
objShare.Delete
Next
此脚本首先连接到本地计算机上的 WMI 服务。然后,我们使用此代码行检索拥有 Name C$ 的所有共享的集合:
Set colShares = objWMIService.ExecQuery _
("Select * from Win32_Share Where Name = 'C$'")
因为计算机上的共享名称必须是唯一的,所以我们的集合将至多只含有一项。但是,由于它是一个集合,我们仍需设置 For Each 循环,以遍历集合中的所有成员。在该循环内部,我们调用 Delete 方法来停止共享此文件夹。
|
注意:不管名称如何,Delete 方法实际上不会删除任何内容;它只是停止共享文件夹。Delete 方法将不会删除共享或其任何内容;它只是阻止数据通过网络共享。 |
正如我们前面所说的那样,这种效果是暂时的:如果 Server 服务停止后又重新启动或者计算机重新启动,那么 C$ 共享将魔术般地再次出现。因此,您可能希望在登录脚本或计算机启动脚本中加入此代码;通过这种方法,即使重新启动了计算机,共享也将被删除。
是的,您可以删除远程计算机上的 C$ 共享(或任何其他共享);您所需要做的就是将该计算机的名称赋给变量 strComputer。例如,下面这个修订后的脚本可以删除远程计算机 atl-ws-01 上的 C$ 共享:
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colShares = objWMIService.ExecQuery _
("Select * from Win32_Share Where Name = 'C$'")
For Each objShare in colShares
objShare.Delete
Next
再见,C$。