Получение Active Directory текущего пользователя с помощью службы Windows - PullRequest
0 голосов
/ 28 июля 2011

Прежде всего, добрый пользователь по имени " leppie " пытался помочь мне, но я не смог получить ответ, который я ищу, и это своего рода неотложный вопрос.

Я запускаю службу Windows в Windows 7 с учетной записью LocalSystem (поскольку эта служба win будет установлена ​​на многих компьютерах удаленно и без вывода сообщений, я думаю, что мне нужно использовать LocalSystem в ServiceInstaller.Designer.cs по коду ниже:

this.ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 
this.ProcessInstaller.Password = null; 
this.ProcessInstaller.Username = null;

Когда я запускаю эту службу Windows, приведенный ниже код не может получить учетные данные пользователя, вошедшего в систему (у пользователей нет прав администратора, даже у меня самого).

using (DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainName"))
{
    using (DirectorySearcher adSearch = new DirectorySearcher(de))
    {
        adSearch.Filter = "(sAMAccountName=" + Environment.UserName + ")";
        SearchResult adSearchResult = adSearch.FindOne();

        UserInternalEmail = GetProperty(adSearchResult, "mail");
    }
}

Мне предложили запустить WinServiceпод учетной записью AD / LDAP / домена, но каким пользователем это может быть?

this.ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.<User ? LocalService ? NetworkService>; 
this.ProcessInstaller.Password = "adminpassword"; 
this.ProcessInstaller.Username = "adminusername";

Я имею в виду, скажем, пользователь ABC является администратором и, скажем, я знал пароль и имя пользователя этого администратора ABC,но когда этот администратор изменит пароль, я думаю, что это повлияет на мой winservice, который будет работать на 70 компьютерах.

Есть ли способ получить учетные данные пользователя?ntials в активном каталоге?Буду очень признателен, если вы предоставите мне несколько примеров кода ..

Большое спасибо,

1 Ответ

1 голос
/ 29 июля 2011

Проблема заключается в том, что Environment.UserName всегда будет возвращать имя пользователя учетной записи службы , под которой работает служба, а не пользователя, вошедшего в систему на компьютере.

См. этот вопрос для получения информации о том, как получить имена пользователей, вошедших в рабочую станцию. Имейте в виду, что Windows позволит одновременно входить нескольким пользователям.

...