Подскажите как из программы перевести компьютер в "спящий режим" (Hibernate),
не запуском внешнего приложения, а например с помощью API...
Или если нет такой функции, то как можно изменить права пользователя для
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"
В DRKB есть раздел: Как перевести компьютер в Stend-by или Hibernate?
там смотрел ?
Да, не заметил...
Но всё равно проблемки, попробую по подробней...
При вызове через
"ShellExecute(Handle, nil, 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);"
Если произведен вход под пользователем с такими же правами, то переход в Hibernate не происходит.
Т.е. Админ(активен) / Админ
Пользователь(активен) / Админ или пользователь
Если вызов через "SetSuspendState( Hibernate, ForceCritical, DisableWakeEvent: Boolean);" (как в DRKB)
то если произведен вход под другим пользователем, с любыми правами, переход в Hibernate не происходит.
При чем не имеет значение какие права у того пользователя котрый активен.
Админ(активен) / Гость - перехода не будет...
Вот собственно хотелось бы это обойти...
Snake_B, а ты привилегии SE_SHUTDOWN_NAME установил?
Может тогда подскажите как определить, что вход осуществлен под Гостем?