LogonUser и другие возвращают ошибку 1337 в Windows Server 2003 x86 - PullRequest
1 голос
/ 30 октября 2010

После некоторого обновления я вижу следующую проблему на всех рядовых серверах Windows Server 2003 (только для x86): вызовы LogonUser и LogonUserEx завершаются с ошибкой 1337 (структура идентификатора безопасности недопустима).

По сути, следующий код завершается ошибкой:

HANDLE token;
BOOL b = LogonUserA( "username", "DOMAIN", "password", 
           LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token );

Я также заметил следующее

  • Запуск того же кода LogonUser, что и локальная система, работает нормально
  • Запусккод в Windows Server 2003, не исправленный в течение длительного времени, работает нормально
  • После последних исправлений WS2003 x86 завершается неудачно, GetLastError () возвращает 1337
  • Настройка привилегии «действовать как часть операционной системы» не помогает,Также не разрешено явное включение привилегии SE_TCB_NAME в коде.
  • Runas / user: DOMAIN \ username работает нормально, исправлен компьютер или нет

Кто-нибудь сталкивался с такой же проблемой?Microsoft признала это ошибкой?

Есть ли обходной путь?Поскольку runas работает, я предполагаю, что есть альтернативный способ сделать то, что делает LogonUser.

1 Ответ

0 голосов
/ 01 ноября 2010

Видимо, именно что-то в разрабатываемом продукте вызывало такое поведение, а не ошибка Windows.

От WinError.h:

//
// MessageId: ERROR_INVALID_SID
//
// MessageText:
//
// The security ID structure is invalid.
//
#define ERROR_INVALID_SID                1337L
...