Добрый день!
Народ помогите решить проблему:
Выдает ошибку: 1314, короче ему привилегий не хватает. Как это можно решить. Поиском искал, много чего нашел, а вот толкового ответа не нашел.
HANDLE hToken;
if( !LogonUser( "user",
"domen",
"pass",
LOGON32_LOGON_SERVICE,
LOGON32_PROVIDER_DEFAULT,
&hToken)){
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL);
ShowMessage( StrPas( ( LPSTR)lpMsgBuf));
LocalFree( lpMsgBuf );
}
STARTUPINFO si;
ZeroMemory( &si, sizeof( si));
si.cb = sizeof( si);
si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi;
if( !CreateProcessAsUser( hToken,
"notepad.exe",
"notepad.exe", // 10 ??????
NULL,
NULL,
false,
CREATE_NEW_CONSOLE | HIGH_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi)){
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL);
ShowMessage( StrPas( ( LPSTR)lpMsgBuf));
LocalFree( lpMsgBuf );
}
Здравствуйте, enola, Вы писали:
E>Народ помогите решить проблему:
E>Выдает ошибку: 1314, короче ему привилегий не хватает. Как это можно решить. Поиском искал, много чего нашел, а вот толкового ответа не нашел.
Порождающий процесс должен иметь привилегию SE_TCB_NAME. Как проверить наличие привилегий смотри
здесьАвтор(ы): Александр Федотов
Дата: 07.03.2002
В статье рассказывается, как определить, имеет ли текущий
пользователь некоторую привилегию. Приводится исходный код функций
для проверки как наличия, так и текущего состояния (включенное или
выключенное) привилегии.
.
Можно еще использовать CreateProcessWithLogonW.
Здравствуйте, kavlad, Вы писали:
K>Порождающий процесс должен иметь привилегию SE_TCB_NAME. Как проверить наличие привилегий смотри здесьАвтор(ы): Александр Федотов
Дата: 07.03.2002
В статье рассказывается, как определить, имеет ли текущий
пользователь некоторую привилегию. Приводится исходный код функций
для проверки как наличия, так и текущего состояния (включенное или
выключенное) привилегии.
.
K>Можно еще использовать CreateProcessWithLogonW.
мда, привилегии у него такой нет, а как ее получить? CreateProcessWithLogonW не нужна данная привилегия?
Здравствуйте, enola, Вы писали:
E>Здравствуйте, kavlad, Вы писали:
K>>Порождающий процесс должен иметь привилегию SE_TCB_NAME. Как проверить наличие привилегий смотри здесьАвтор(ы): Александр Федотов
Дата: 07.03.2002
В статье рассказывается, как определить, имеет ли текущий
пользователь некоторую привилегию. Приводится исходный код функций
для проверки как наличия, так и текущего состояния (включенное или
выключенное) привилегии.
.
K>>Можно еще использовать CreateProcessWithLogonW.
E>мда, привилегии у него такой нет, а как ее получить?
Запустить его под LocalSistem, например, сделать сервис, который будет создавать по требованию вашего приложения процесс.
E>CreateProcessWithLogonW не нужна данная привилегия?
Не нужна. Но на Win98/Me ее нет.
Здравствуйте, kavlad, Вы писали:
E>>CreateProcessWithLogonW не нужна данная привилегия?
K>Не нужна. Но на Win98/Me ее нет.
вот так вот пишу:
PROCESS_INFORMATION pi;
STARTUPINFOW si;
ZeroMemory( &si, sizeof( STARTUPINFOW ) );
si.cb= sizeof( STARTUPINFOW );
si.lpDesktop = L"winsta0\\default";
bool ret = CreateProcessWithLogonW( L"user", L"domen", L"pass", LOGON_WITH_PROFILE,
NULL, L"notepad.exe",
CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi );
и не работает!
Здравствуйте, <Аноним>, Вы писали:
А>А>si.lpDesktop = 0;
А>
Здравствуйте, kavlad, Вы писали:
K>Здравствуйте, <Аноним>, Вы писали:
А>>А>>si.lpDesktop = 0;
А>>
Спасибо тебе большое! Получилось!
Здравствуйте, enola, Вы писали:
E>Спасибо тебе большое! Получилось!
Советую почитать Рихтера, чтобы понять почему

Рихтер берется
здесь.