Avatar billede nameless Nybegynder
30. januar 2004 - 11:35 Der er 3 kommentarer og
1 løsning

Reboot windows xp

Hvordan genstarter man en windows xp computer ?
jeg ved det er noget med rettigheder men jeg ved ikke hvordan?

har prøvet følgende eksempel uden held:
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
Avatar billede borrisholt Novice
30. januar 2004 - 11:37 #1
Jeg har´noget Delphi kode du kan få ... Det er 90% magen til C++ kode i DET HER tilfælde !

Jens B
Avatar billede nameless Nybegynder
30. januar 2004 - 11:42 #2
Bare kom med det så kan jeg prøve om jeg kan hitte ud af det ;)
ER ikke den vilde nørd til c++ (indnu)
Avatar billede jakobdo Ekspert
30. januar 2004 - 14:55 #3
Avatar billede driis Nybegynder
30. januar 2004 - 15:45 #4
Dette virker:

#include <windows.h>

bool ShutDownSystem(long flag)
{
    OSVERSIONINFO        vi ;
    LUID                luid ;
    HANDLE                hProcess, hToken ;
    long                ret = -1 ;
    DWORD                s ;
    TOKEN_PRIVILEGES    tp, tpOld ;

    vi.dwOSVersionInfoSize = sizeof(vi) ;
    GetVersionEx(&vi) ;
    if ( vi.dwPlatformId == VER_PLATFORM_WIN32_NT )
    {
        // Der køres NT, og vi skal have lavet rettigheder til at lukke systemet ned
        if ( LookupPrivilegeValue(0,SE_SHUTDOWN_NAME,&luid) )
        {
            hProcess = GetCurrentProcess()  ;
            if ( hProcess )
            {
                if ( OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
                {
                    tp.PrivilegeCount = 1 ;
                    tp.Privileges->Attributes = SE_PRIVILEGE_ENABLED ;
                    tp.Privileges->Luid.HighPart = luid.HighPart ;
                    tp.Privileges->Luid.LowPart = luid.LowPart  ;
                    ret = AdjustTokenPrivileges(hToken, FALSE,&tp,sizeof(tp),&tpOld,&s) ;
                }
                CloseHandle(hToken) ;
            }
        }
    }
   
    if ( ExitWindowsEx(flag,0) )
        return true ;
    else
        return false ;   
}

int main()
{
    ShutDownSystem(EWX_REBOOT|EWX_FORCE) ;
}

Grunden til at ExitWindowsEx alene ikke virker, er at processeb skal have rettigheder til at lukke Windows under NT / XP.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester