为什么将Win32_Shares枚举为“本地服务”用户会返回空属性?

| 我有以下代码:
  var searcher = new ManagementObjectSearcher(\"SELECT Name, Path FROM Win32_share\");
  ManagementObjectCollection coll = searcher.Get();

  foreach (var share in coll)
  {
      Console.WriteLine(\"share-path: \" + share[\"Path\"] + \" share-name:\" + share[\"Name\"]);
  }
以我的身份运行,我得到了明智的输出:
share-path: C:\\Windows share-name:ADMIN$
share-path: C:\\ share-name:C$
share-path: D:\\ share-name:D
share-path: D:\\ share-name:D$
share-path:  share-name:IPC$
从服务作为本地系统用户运行它,我没有任何Path属性:
share-path: share-name:ADMIN$
share-path: share-name:C$
share-path: share-name:D
share-path: share-name:D$
share-path: share-name:IPC$
本地服务是否应该无法查看共享文件夹路径?我究竟做错了什么? (注意:我还尝试了以\“ NETWORK SERVICE \”运行,结果相同。     
已邀请:
我尝试使用WinApi NetShareEnum并收到相同的结果。需要注意的是,此代码在Windows 2008 R2上可以正常运行,并且在Windows 2008上不起作用。我没有尝试过较早的平台。 这似乎是一个权限问题,因为本地SYSTEM帐户有权访问共享路径。无休止的测试和使用本地安全设置的测试并没有带来任何结果。使用regmon或filemon我找不到任何可疑的活动。我最终将我的应用程序切换到SYSTEM帐户。     
本地服务无权共享网络。您需要以具有适当权限的用户身份运行服务,最有可能是具有共享权限的域用户。     

要回复问题请先登录注册