Я хочу создать пользователя с программой (c #, .net 4.5):
String Domain = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
...
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
{
if (UserPrincipal.FindByIdentity(pc, IdentityType.UserPrincipalName, USER) != null)
{
.. error message ..
...
По крайней мере, это работает для доменов. Но создание локального пользователя (создание на компьютере, принадлежащем к домену или автономному компьютеру) не сработало (исполняющий пользователь - администратор - ручное добавление пользователя работает).
Я пытался установить для Domain-Name значение
- System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties () HostName;.
- "локальный"
- "127.0.0.1"
Но затем я получил следующее сообщение об ошибке на FindByIdentity :
System.DirectoryServices.AccountManagement.PrincipalServerDownException:
Mit dem Server konnte keine Verbindung hergestellt werden. --->
System.DirectoryServices.Protocols.LdapException: Der LDAP-Server ist nicht verfügbar.
(немецкий, я добавил разрывы строк) Грубо говоря: «Не удалось подключиться к серверу -> LDAP-сервер недоступен».
Я также изменил PrincipalContext на
using (PrincipalContext pc = new PrincipalContext(ContextType.Machine, Domain))
(и протестировал все домены, как указано выше). Затем я получил следующее сообщение об ошибке на FindByIdentity :
System.IO.FileNotFoundException: Der Netzwerkpfad wurde nicht gefunden.
(немецкий) Грубо переводится: «Сетевой путь не найден».
(Все протестировано в Windows 10 (в домене) и «чистой» доменной Windows 7).
Что я могу сделать, чтобы это работало И просто имел один кодовый путь для всех случаев.
(Подсказка Я также протестировал удаление доменного имени из PrincipalContext и добавление его к пользователю "@" + Домен.)
Редактировать
using (PrincipalContext pc = new PrincipalContext(ContextType.Machine))
{
if (UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, USER) != null)
{
.. error message ..
...
работает для локального доступа на компьютере без домена.