HANDLE hToken;
STARTUPINFO StartInfo = {sizeof(TStartupInfo)};
PROCESS_INFORMATION ProcInfo;
StartInfo.cb = sizeof(StartInfo);
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_SHOWNORMAL;
if( !LogonUser("админ", "домен", "пароль", 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 );
}
CreateProcessAsUser(hToken, "c:\\myapp.exe", "c:\\myapp.exe", NULL, NULL, false, HIGH_PRIORITY_CLASS, NULL, NULL, &StartInfo, &ProcInfo);
CloseHandle(ProcInfo.hProcess);
CreateProcessAsUser
Вот запускаю прогу а она мне: Клиент не обладает требуемыми правами!
Хотя при запуске "руками" этой проги от имени другого пользователя все работает.
Код:
раньше все работало, а потом что-то я поправил, и перестала, замучился уже, может, кто подскажет, в чем дело?
Народ ну что никто не знает?
А вот интересно в RunAs сразу пароль в комманде указать можно?
Вообще у меня LogonUser не проходит, люди помогите!
Поиграй с параметрами LogonUser. И, кстати, какую именно ошибку выдаёт GetLastError. Может быть, процесс, вызывающий LogonUser, не обладает нужными привилегиями?
Читал, что в справке Win32 SDK или в MSDN про LogonUser написано? Или наугад действуешь ;)
Цитата:
Originally posted by fellow
Если работала до правки, и потом перестала, так поправь всё назад :)
Поиграй с параметрами LogonUser. И, кстати, какую именно ошибку выдаёт GetLastError. Может быть, процесс, вызывающий LogonUser, не обладает нужными привилегиями?
Читал, что в справке Win32 SDK или в MSDN про LogonUser написано? Или наугад действуешь ;)
Если работала до правки, и потом перестала, так поправь всё назад :)
Поиграй с параметрами LogonUser. И, кстати, какую именно ошибку выдаёт GetLastError. Может быть, процесс, вызывающий LogonUser, не обладает нужными привилегиями?
Читал, что в справке Win32 SDK или в MSDN про LogonUser написано? Или наугад действуешь ;)
я бы рад все назад да не получается :)
GetLastError() выдает: 1314 A required privilege is not held by the client.
с MSDN делал все, не работает, привелегий ему не хватает, а как сделать не знаю, может есть рабочий пример?
PROCESS_INFORMATION ProcInfo;
STARTUPINFOW StartInfo;
ZeroMemory(&StartInfo, sizeof(STARTUPINFOW));
StartInfo.cb = sizeof(STARTUPINFOW);
StartInfo.lpDesktop = 0;
CreateProcessWithLogonW( L"user", L"domen", L"pass", LOGON_WITH_PROFILE, NULL, L"notepad.exe", CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE, NULL, NULL,
&StartInfo, &ProcInfo )
и все работает!
А так, рой в сторону OpenProcessToken и SetPrivilege
Цитата:
Originally posted by fellow
Ну, можно и так, если только под вин2к.
А так, рой в сторону OpenProcessToken и SetPrivilege
Ну, можно и так, если только под вин2к.
А так, рой в сторону OpenProcessToken и SetPrivilege
а что под XP работать не будет?
на MSDN пишут:
Цитата:
Requires Windows "Longhorn", Windows XP, or Windows 2000 Professional.
Цитата:
Originally posted by enola
а что под XP работать не будет?
а что под XP работать не будет?
Это я к тому, что про W'95, линолеум и W'98 можно забыть.
Цитата:
Originally posted by fellow
Это я к тому, что про W'95, линолеум и W'98 можно забыть.
Это я к тому, что про W'95, линолеум и W'98 можно забыть.
ну так это я знаю. теперь будет новая тема :)
Цитата:
Originally posted by fellow
Это я к тому, что про W'95, линолеум и W'98 можно забыть.
Это я к тому, что про W'95, линолеум и W'98 можно забыть.
Я думаю в этих бы видах и такх проблем бы особо не было бы...