gpt4 book ai didi

C# PrincipalContext 找不到网络路径

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:49 25 4
gpt4 key购买 nike

我正在尝试使用 PrincipalContext 检查远程计算机上是否存在本地用户组。

我在使用 PrincipalContext 时遇到问题:

PrincipalContext ctx = new PrincipalContext(ContextType.Machine, machine, null, ContextOptions.Negotiate)

它适用于这样的场景:

  • 本地到本地机器
  • 本地到虚拟机
  • 域机器到工作组机器

但是它在相反的方向上不起作用:

  • 虚拟机到本地主机
  • 工作组机器到域机器

我收到这些错误:

Unhandled Exception: System.IO.FileNotFoundException: The network path was not found.

Unhandled Exception: System.Runtime.InteropServices.COMException: The network path was not found.

第一个异常(exception)是虚拟机,第二个是工作组机器。

所有机器都有具有相同名称和密码的用户,并且代码是从该用户执行的。

如何解决这个问题?

最佳答案

我找到了答案。看起来 DirectoryServices 在远程 Windows 7 或更高版本上不起作用。我想当一台计算机在工作组中时,它就是本地的,我们可以连接,而当它在域中时,它就是远程的。

我按照此处描述的步骤操作:
System.IO.FileNotFoundException: The network path was not found. Exception while using DirectoryEntry object on windows 7
在这里:
http://www.peppercrew.nl/index.php/2011/09/connect-to-remote-registry-fails-with-an-error-is-preventing-this-key-from-being-opened/

Enable File and Print sharing in the Firewall<br/>
Start the Remote Registry Service<br/>
Add remote user access to this registry entry: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg

但是我无法更改生产服务器上的服务和注册表设置。我找到了这样的方式来获取组:

var server = new DirectoryEntry(string.Format("WinNT://{0},Computer", machine));
DirectoryEntry group = server.Children.Cast<DirectoryEntry>().Where(
d => d.SchemaClassName.Equals("Group") && d.Name.Equals("Administrators")
).Single<DirectoryEntry>();

关于C# PrincipalContext 找不到网络路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com