Необходимо в программе задать логин и пароль для запуска службы. Само это дело все работает, но как проверить вначале правильность ввода Имени входа и пароля? Нигде не вижу зацепку.
Само имя и пароль меняю через ManagementBaseObject с параметром Change.
Здравствуйте, 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 Как проверить учетные данные пользователя для операционных систем корпорации Майкрософт
там и обсуждается вопрос ТС.