C# Login Valid
От: head-dron  
Дата: 17.11.10 11:51
Оценка:
Необходимо в программе задать логин и пароль для запуска службы. Само это дело все работает, но как проверить вначале правильность ввода Имени входа и пароля? Нигде не вижу зацепку.
Само имя и пароль меняю через ManagementBaseObject с параметром Change.
Re: C# Login Valid
От: Clickmaker Россия http://relaxander.webest.net/
Дата: 17.11.10 14:10
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Необходимо в программе задать логин и пароль для запуска службы. Само это дело все работает, но как проверить вначале правильность ввода Имени входа и пароля? Нигде не вижу зацепку.

HD>Само имя и пароль меняю через ManagementBaseObject с параметром Change.

[DllImport("advapi32.dll", SetLastError=true)]
public static extern bool LogonUser(string lpszUsername,string lpszDomain,string lpszPassword,int dwLogonType,int dwLogonProvider,out IntPtr phToken);

var validAccount = LogonUser("user", "", "pwd", 5, 0, out token);
Re[2]: C# Login Valid
От: Pavel Dvorkin Россия  
Дата: 17.11.10 14:35
Оценка: 22 (2) +1
Здравствуйте, Clickmaker, Вы писали:

C>Здравствуйте, head-dron, Вы писали:


HD>>Необходимо в программе задать логин и пароль для запуска службы. Само это дело все работает, но как проверить вначале правильность ввода Имени входа и пароля? Нигде не вижу зацепку.

HD>>Само имя и пароль меняю через ManagementBaseObject с параметром Change.

C>[DllImport("advapi32.dll", SetLastError=true)]

C>public static extern bool LogonUser(string lpszUsername,string lpszDomain,string lpszPassword,int dwLogonType,int dwLogonProvider,out IntPtr phToken);

C>var validAccount = LogonUser("user", "", "pwd", 5, 0, out token);


Осторожнее с таким советом.

К сожалению существуют некоторые ограничения на использование метода LogonUser, не всегда удобно для выполнения.
Первый и крупнейших этих ограничений — в Windows NT и Windows 2000, процесс, который осуществляет вызов метода LogonUser должен иметь право SE_TCB_NAME (в окне диспетчера пользователей это право «Действовать как часть операционной системы»). Привилегия SE_TCB_NAME — очень мощный и не разрешен для любого произвольного пользователя только таким образом, чтобы их можно запустить приложение, которое требуется для проверки учетных данных. Рекомендуется вызывать LogonUser службой, работающей в локальную системную учетную запись, так как локальная системная учетная запись уже имеет право SE_TCB_NAME.

Все это отсюда

http://support.microsoft.com/kb/180548 Как проверить учетные данные пользователя для операционных систем корпорации Майкрософт


там и обсуждается вопрос ТС.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.