Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Команда на переход в Hibernate из программы функцией Api...

Автор: Snake_B 17.11.2006 2:03

Подскажите как из программы перевести компьютер в "спящий режим" (Hibernate),
не запуском внешнего приложения, а например с помощью API...

Или если нет такой функции, то как можно изменить права пользователя для
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"

Автор: klem4 17.11.2006 2:06

В DRKB есть раздел: Как перевести компьютер в Stend-by или Hibernate?


там смотрел ?

Автор: Snake_B 17.11.2006 12:16

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

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

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

Вот собственно хотелось бы это обойти...

Автор: volvo 17.11.2006 16:00

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

Автор: Snake_B 17.11.2006 16:20

Цитата(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 19.11.2006 21:13

Может тогда подскажите как определить, что вход осуществлен под Гостем?