PDA

View Full Version : Shutdown کردن سیستم



amir15000
چهارشنبه 27 دی 1391, 08:56 صبح
یه سوالی برام پیش آمده برای خاموش کردن سیستم من از کد exitwindowsex استفاده می کنم log off می شه ولی reset یا shudown نمی شه؟ علتش چی می تونه باشه

lord_viper
چهارشنبه 27 دی 1391, 09:34 صبح
شما برای این کار باید دسترسی خاموش کردن Privilage اونو داشته باشید



function WindowsExit(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd) ;
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid) ;
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg) ;
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired) ;
end;
end;
Result := ExitWindowsEx(RebootParam, 0) ;
end;


روش استفاده



:

//Shutdown
WindowsExit(EWX_POWEROFF or EWX_FORCE) ;

//Reboot Windows
WindowsExit(EWX_REBOOT or EWX_FORCE) ;