【发布时间】:2018-06-08 18:58:44
【问题描述】:
我尝试了以下代码:
Dim objWMIService = GetObject("winmgmts:\\srv0000\root\CIMV2")
Dim colShares = objWMIService.ExecQuery("SELECT * FROM Win32_Share")
For Each objShare In colShares
MsgBox("Name: " & objShare.Name)
Next
但我收到错误无法创建 ActiveX 组件。在第 1 行。
所以我尝试了:
Dim scope As ManagementScope = New ManagementScope("\\srv0000\root\CIMV2")
scope.Connect()
Dim worker As ManagementObjectSearcher = New ManagementObjectSearcher(scope, New ObjectQuery("SELECT * FROM win32_share"))
For Each share As ManagementObject In worker.Get
MsgBox(share("Name"))
Next
但我收到错误访问被拒绝。 (HRESULT 异常:0x80070005 (E_ACCESSDENIED)) 在第 2 行。
如上图所示,我确实可以访问服务器,但我不是管理员。我只想以资源管理器的方式列出共享。由于我不需要对共享进行编辑,是否有其他方法我可以采取的不太可靠的方法?
谢谢!
【问题讨论】:
-
和c#标签有什么用?
-
因为这不是 vb 或 c# 特定的问题。
-
我能理解 C# 和 vb.net,所以任何一个答案都可以。我不确定你的意思是什么?
-
如果你以管理员身份运行程序会发生什么?
-
我作为管理员的第二次尝试运行良好。我知道我的 2 种方法通常用于观察或编辑服务器共享,因此我在原始问题的末尾添加了更多内容。我不需要像 WMI 提供的那样强大的选项,而且由于用户只是列出了共享,我不需要授予他们管理员权限(假设有另一种方式)。谢谢!