Помощь - Поиск - Пользователи - Календарь
Полная версия: Команда на переход в Hibernate из программы функцией Api...
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Snake_B
Подскажите как из программы перевести компьютер в "спящий режим" (Hibernate),
не запуском внешнего приложения, а например с помощью API...

Или если нет такой функции, то как можно изменить права пользователя для
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"
klem4
В DRKB есть раздел: Как перевести компьютер в Stend-by или Hibernate?


там смотрел ?
Snake_B
Да, не заметил...
Но всё равно проблемки, попробую по подробней...

При вызове через
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"
Если произведен вход под пользователем с такими же правами, то переход в Hibernate не происходит.
Т.е. Админ(активен) / Админ
Пользователь(активен) / Админ или пользователь

Если вызов через "SetSuspendState( Hibernate, ForceCritical, DisableWakeEvent: Boolean);" (как в DRKB)
то если произведен вход под другим пользователем, с любыми правами, переход в Hibernate не происходит.
При чем не имеет значение какие права у того пользователя котрый активен.
Админ(активен) / Гость - перехода не будет...

Вот собственно хотелось бы это обойти...
volvo
Snake_B, а ты привилегии SE_SHUTDOWN_NAME установил?
Snake_B
Цитата(volvo @ 17.11.2006 21:00) *

Snake_B, а ты привилегии SE_SHUTDOWN_NAME установил?


NTSetPrivilege(SE_SHUTDOWN_NAME,True);
SetSuspendState(True, True, True);
NTSetPrivilege(SE_SHUTDOWN_NAME,False);

так же пробовал SetSuspendState со значениями (True, True/false, True/false);

только ни чего не изменилось... а для
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"
привелегии не работают, внешняя программа...
Snake_B
Может тогда подскажите как определить, что вход осуществлен под Гостем?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.