{"id":375,"date":"2008-05-24T03:23:07","date_gmt":"2008-05-24T03:23:07","guid":{"rendered":"http:\/\/6teen.ru\/?p=187"},"modified":"2008-05-24T03:23:07","modified_gmt":"2008-05-24T03:23:07","slug":"6279","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=375","title":{"rendered":"\u041a\u0430\u043a \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Windows"},"content":{"rendered":"<p>\u041a\u0430\u043a \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Windows<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u041a\u0430\u043a \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Windows\n\n\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c:\n\nfunction GetWinVersion: String;\nvar\n   VersionInfo : TOSVersionInfo;\n   OSName      : String;\nbegin\n   \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438\n   VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );\n\n   if Windows.GetVersionEx( VersionInfo ) then\n      begin\n         with VersionInfo do\n         begin\n            case dwPlatformId of\n               VER_PLATFORM_WIN32s   : OSName := 'Win32s';\n               VER_PLATFORM_WIN32_WINDOWS : OSName := 'Windows 95';\n               VER_PLATFORM_WIN32_NT      : OSName := 'Windows NT';\n            end; \/\/ case dwPlatformId\n            Result := OSName + ' Version ' + IntToStr( dwMajorVersion ) + '.' + IntToStr( dwMinorVersion ) +\n                      #13#10' (Build ' + IntToStr( dwBuildNumber ) + ': ' + szCSDVersion + ')';\n         end; \/\/ with VersionInfo\n      end \/\/ if GetVersionEx\n   else\n      Result := '';\nend;\n\nprocedure ShutDown;\nconst\n  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';   \/\/ Borland forgot this declaration\nvar\n  hToken       : THandle;\n  tkp          : TTokenPrivileges;\n  tkpo         : TTokenPrivileges;\n  zero         : DWORD;\nbegin\n  if Pos( 'Windows NT', GetWinVersion) = 1  then \/\/ we've got to do a whole buch of things\n     begin\n        zero := 0;\n        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then\n           begin\n             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );\n             Exit;\n           end; \/\/ if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)\n        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then\n           begin\n             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );\n             Exit;\n           end; \/\/ if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)\n        \/\/ SE_SHUTDOWN_NAME\n        if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then\n           begin\n              MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );\n              Exit;\n           end; \/\/ if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[0].Luid )\n        tkp.PrivilegeCount := 1;\n        tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;\n        AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );\n        if Boolean( GetLastError() ) then\n           begin\n              MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );\n              Exit;\n           end \/\/ if Boolean( GetLastError() )\n        else\n           ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );\n      end \/\/ if OSVersion = 'Windows NT'\n   else\n      begin \/\/ just shut the machine down\n        ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );\n      end; \/\/ else\nend;\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Windows<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[431,439],"tags":[603,633,669,813],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/375"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=375"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/375\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=375"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}