Цитата(Darkmaster @ 21.6.2006, 12:50 ) | | просто пишу программу которая автоматом выключает комп. Проблема в том что в таком случае нужно подтверждать ззакрытия прог других. |
Нет никаких проблем. Выключай с помощью ExitWindowsEx и параметром EWX_FORCE.
Для NT это будет выглядеть так:
| Код | Function SetPrivilege(aPrivilegeName: String; aEnabled: Boolean ): Boolean; Var TPPrev, TP: TTokenPrivileges; Token: THandle; dwRetLen: DWord; Begin Result:=False; OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, @Token ); TP.PrivilegeCount:=1; IF LookupPrivilegeValue(nil,PChar(aPrivilegeName),TP.Privileges[0].LUID )) then Begin IF aEnabled then TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED else TP.Privileges[0].Attributes:=0; dwRetLen:= 0; Result:=AdjustTokenPrivileges(Token,False,TP,SizeOf(TPPrev),TPPrev,dwRetLen); End; CloseHandle(Token); End; |
| Код | SetPrivilege('SeShutdownPrivilege',True); ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); |
Для не NT привелегии можно не получать. |