![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с InitiateSystemShutdown [D6, D7, WinXP]
Pohil © (2004-03-24 00:19:00)Уважаемые товарищи ! Помогите мне разобраться с этой наглой функцией. Вообщем мне нужно перезагрузить удаленный компьютер. В хэлпе по АПИ написано что - то вроде: "To shut down a remote computer, the calling process must have the SE_REMOTE_SHUTDOWN_NAME privilege on the remote computer." Только я не пойму как эти привилегии получить. И собственно функции AdjustTokenPrivileges передать SE_REMOTE_SHUTDOWN_NAME не получится. Надо вроде в winnt.h чего - то поглядеть. Короче помогите. Если есть то киньте на мыло winnt.h. Заранее благодарен.
Надеюсь не зря :)
Unknown user (2004-04-26 19:05:00) [1]2 Pohil. Не занимайся ерундой. Дпя управления учетными записями в W2K используют WMI, и для твоей задачи давно уже изобретено множество программ для удаленного администрирования, причем при отсутствии домена используются программы клиенты на удаленных ПК.
Cobalt (2004-04-24 14:26:00) [2]Имхо, это уже не администрирование, а как-то по другому называется.
Вот у нас в фирме - компов ~20, и на всех стоят Win2K или WinXP. И все - в домене. Автоматическое обновление, и т.п.
Вот ЭТО - администрирование.
narayan (2004-04-24 13:59:00) [3]Ну и вот. Если такая учётная запись имеется и ты войдёшь в домен под ней, твоя прога сможет получить права на перезгрузку любого члена энтого домена.
А можно логониться без админских прав, но прогу твою запускать от имени другой учётной записи.
Narayan (2004-04-24 13:54:00) [4]Pohil © (08.04.04 22:17) [17]
1.Как не вставая с места получить права именно на удаленной машине?
Для этого на контроллере домена должно находиться учётная запись(1) логин и пароль которой ты знаешь.
2.Как, опять же, не вставая с места создать аккаунт для себя на удаленном компе.
Для этого учётная запись(1) должна обладать правами администратора ;)
Было бы странно, если б каждый мог не вставая с места всё подряд перегружать. Не так ли?
Hkr (2004-04-24 11:03:00) [5]
> 2Pohil ©
А если сделать и распихать по всем компам программк, которая будет висеть на каком-нибудь порту, и ждать, когда придет комманда выключить комп?
Pohil (2004-04-12 00:29:00) [6]Можно простой вопрос: как зарегиться под другим пользователем?
Wistler (2004-04-11 02:23:00) [7]Sorry, IDTelnet
Pohil (2004-04-10 20:34:00) [8]> 2Wistler
Блин, я в D7 не могу найти IWTerminal. Где он там спрятан? И документации по нему нету.
Хеееееееееееееееееееееееееей, пиплы, отзовитесь.
Pohil (2004-04-10 14:15:00) [9]> 2Wistler
> можно зарегестрировавшись под пользоывателем имеющим администраторские права...
Можно поподробней на этом моменте. Я раньше не встречался с IWTerminal.
Wistler (2004-04-10 13:48:00) [10]Через сокет, или есть компонента в D7, называется типа IWTerminal или что-то типо того. Избежать ошибки "Отказано в доступе" можно зарегестрировавшись под пользоывателем имеющим администраторские права.
У себя я так выключал компы.
Pohil (2004-04-09 21:35:00) [11]> 2Wistler
Если ты имеешь ввиду сервер терминалов, то нет, не судьба. Дело в том что он выдает такую же ошибку, т.е. "Отказано в доступе". Да и, к тому же, интересно просто как это на делфе сделать.
WebErr (2004-04-09 18:16:00) [12]
> Wistler © (09.04.04 17:48) [21]
Это как?
Wistler (2004-04-09 17:48:00) [13]А не судьба через Terminal выключить:
Подсоединится к удалённой машине и вызвать команду Shutdown
Игорь Шевченко (2004-04-09 13:26:00) [14]
> Честно говоря, я вообще н уверен, есть ли на удаленных компьютерах
> моя учетная запись. :)
Если удаленные компьютеры в домене и ты один из администраторов домена, то учетная запись есть. В контроллере домена.
Иначе это уже не администирование, а несколько иначе называется.
Pohil (2004-04-09 12:08:00) [15]> У тебя 100 компьютеров и все под XP ?
100 это ведь утрировано. Но 40 набереться, и XP, конечно, не на всех, но все таки преобладает. К тому же это не важно, даже если б 1 только был. Задача есть - требуется ее решить. Подскажи пожалуйста.
Игорь Шевченко (2004-04-08 23:17:00) [16]У тебя 100 компьютеров и все под XP ?
Pohil (2004-04-08 22:17:00) [17]>2Игорь Шевченко
>Кроме того, я не уверен, что все операциооные системы...
Я тут глядел MSDN по этому поводу, и там сказано, что под XP это вполне возможно.
Прости, я повторюсь:
1.Как не вставая с места получить права именно на удаленной машине?
2.Как, опять же, не вставая с места создать аккаунт для себя на удаленном компе.
Игорь Шевченко (2004-04-08 11:53:00) [18]" By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers"
Кроме того, я не уверен, что все операциооные системы могут обработать вызов Remote Shutdown, просто не в курсе.
В локальной политике есть политика отвечающая за то, можно ли удаленно перезагрузить компьютер, можно и туда поглядеть.
Pohil (2004-04-08 11:39:00) [19]>2Игорь Шевченко
Честно говоря, я вообще н уверен, есть ли на удаленных компьютерах моя учетная запись. :)
Вариант 1.
Но допустим, что есть, как не вставая с места получить права именно на удаленной машине? AdjustTokenPrivileges по-моему сразу отпадает.
Вариант 2.
А если нет ее. Крайне не приятно получится. Встает 2 проблема: как, опять же, не вставая с места создать аккаунт для себя на удаленном компе.
>> Еще совет: вызывай GetLastError ....
Вызывал. Она говорит что все прекрасно и должно работать.
Еще вопрос: функция InitiateSystemShutdown всегда передает аккаунт под которым запускается?
Игорь Шевченко (2004-04-08 10:27:00) [20]Pohil © (08.04.04 02:02)
Ну вот видишь, уже информация.
"By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers. " -
это условие выполняется ? Есть ли у твоей учетной записи такая привилегия на удаленных компьютерах или в домене ?
"Common reasons for failure include an invalid or inaccessible computer name or insufficient privilege."
Еще совет: вызывай GetLastError после AdjustTokenPrivileges и сравнивай с ERROR_SUCCESS, если не сравнилось, выдавай ее значение, вышеописанным способом и говори здесь :)