![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Алёна |
|
|||
|
Unregistered |
Нужно установить время на WinXP , но нет прав на это :-(
(закрыт админом в целях защиты ...) Но часы нужно хотя бы периодически синхронизировать с точными... В XP есть возможность сделать "запуск от имени" ... Хотелось бы чтобы в моей программе, которая забирает время с хоста , всё-таки работала функция установки времени SetSystemTime, пароль и имя пользователя с правами админа компьютера известен. Как теперь их использовать , да ещё хотелось бы чтобы аудентификация проходила автоматически , без вопросов введите пароль... Понятно , что легче открыть права на установку, но нельзя . Буду очень рада ответу... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
BOOL CreateProcessAsUser(
HANDLE hToken, // handle to a token that represents a logged-on user LPCTSTR lpApplicationName, // pointer to name of executable module LPTSTR lpCommandLine, // pointer to command line string LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes BOOL bInheritHandles, // new process inherits handles DWORD dwCreationFlags, // creation flags LPVOID lpEnvironment, // pointer to new environment block LPCTSTR lpCurrentDirectory, // pointer to current directory name LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION ); -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Алёна |
|
|||
|
Unregistered |
Привет Ваа!
А что теперь делать с CreateProcessAsUser, там ведь нужно перед ней использовать LogonUser? (может немного примера, ну пожа-а-а-луйста!!) |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
А вот придется тебя огорчить
http://www.delphi.xonix.ru/article/?id=logonuser Придется тебе писать свой сервис -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| dim |
|
|||
|
Unregistered |
Вообще-то данная проблема свойственна только W2K/NT, а в XP должно работать потому что LogonUser уже не требует SE_TCB_NAME привелегии. Насколько я понял речь идет об XP - значит проблем не должно быть.
|
|||
|
||||
| Алёна |
|
|||
|
Unregistered |
Странно, тогда если в XP нет SE_TCB_NAME почему тогда результат кода ниже есть "Клиент не обладает требуемыми правами" ????????
ДА, на остальные мои изменения типа подстановки в код несуществуюшего пользователя и несуществ. имени запускаемой программы этот код реагирует правильно "Вход в систему не произведён ,имя пользователя не опознаны" и "не удаётся найти указанный файл" соответственно... Запускаемая программа лежит в текущей директории и копия в Винде , на всяк случай :-) Где-то близка к результату , а в чём дело не разберу... int argc; char **argv; HANDLE hToken = NULL; BOOL ok = FALSE; char *user; char *domain; char *password; STARTUPINFO startup_info; PROCESS_INFORMATION proc_info; LPTSTR lpCmd = NULL; char lpSystemDir[MAX_PATH]; user = "test" ; password ="test"; // domain =0; domain ="."; ok = LogonUser( user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken ); if (ok == FALSE) goto finish2; ZeroMemory(&startup_info,sizeof(STARTUPINFO)); startup_info.cb = sizeof(STARTUPINFO); startup_info.wShowWindow = SW_SHOW; startup_info.dwFlags = STARTF_USESTDHANDLES; startup_info.lpDesktop = (LPTSTR) "Winsta0\\Default"; lpCmd = "calc.exe" ; ok = CreateProcessAsUser( hToken, NULL, lpCmd, NULL, NULL, TRUE, 0, NULL, NULL, &startup_info, &proc_info); if (ok == TRUE) { CloseHandle(proc_info.hThread); CloseHandle(proc_info.hProcess); } finish2: if (ok == FALSE) { LPTSTR lpMsgBuf; DWORD cnBytes; cnBytes = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (LPTSTR)&lpMsgBuf, 0, NULL ); if (cnBytes > 0) { MessageBox(NULL, lpMsgBuf, "SECBUG", MB_OK); LocalFree(lpMsgBuf); } } if (lpCmd != NULL) LocalFree(lpCmd); if (hToken != NULL) CloseHandle(hToken); |
|||
|
||||
| dim |
|
|||
|
Unregistered |
Sorry, тогда я погарячился - просто не юзал WinXP. Скорее всего не остается ничего другого как использовать service.
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Кстати, домен надо указывать не точку, а NULL
У меня не ХР... помочь ничем не могу... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |