如何远程关闭计算机(winxp)

解决方案 »

  1.   

    所谓远程关闭计算机就是你能与远程计算机通讯,并使你在远程计算机中可以运行ExitWindowsEx函数。
      

  2.   

    不对,要让win98关机只能用ExitWindowsEx,
    或者是Shell "rundll32.exe user.exe,restartwindows"在NT/w2k/winXp中,要使用
    InitiateSystemShutdown( )、或者是命令行shutdown -s
    可是每次使用之后,只能是关闭到"您可以安全关机了"--不关电源
    而用"下载快车flashGet",设置为下载后关闭计算机,则可以完全关机--关电源真不知它是如何搞的,请各个朋友赐教!!!
      

  3.   

    For NT/2000/XP的代码:int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: Place code here.
    HANDLE hToken;              // handle to process token 
    TOKEN_PRIVILEGES tkp;       // pointer to token structure 
     
    if (!OpenProcessToken(GetCurrentProcess(), 
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
    DWORD dwError = GetLastError();
    return 1;
    }
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
    &tkp.Privileges[0].Luid); 
     
    tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
     
    // Get shutdown privilege for this process. 
     
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
    (PTOKEN_PRIVILEGES) NULL, 0); 
     
    // Cannot test the return value of AdjustTokenPrivileges. 
     
    if (GetLastError() != ERROR_SUCCESS) 
    {
    DWORD dwError = GetLastError();
    return 2;
    } BOOL bResult = ExitWindowsEx(EWX_POWEROFF, 0);
    if(FALSE == bResult)
    {
    DWORD dwError = GetLastError();
    return 3;
    }
    return 0;
    }