ソフトウェア開発 Win32プログラミング

Windowsを再起動、ログオフ、シャットダウンする

戻る


Windowsを再起動するコードを以下に示す。

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

BOOL EnableProcessPriviledge(LPCTSTR pszSE_)
{
    BOOL f;
    HANDLE hToken;
    LUID luid;
    TOKEN_PRIVILEGES tp;
    
    f = FALSE;
    if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        if (LookupPrivilegeValue(NULL, pszSE_, &luid))
        {
            tp.PrivilegeCount = 1;
            tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
            tp.Privileges[0].Luid = luid;
            f = AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
        }
        CloseHandle(hToken);
    }
    
    return f;
}

#ifdef UNITTEST
int main(void)
{
    EnableProcessPriviledge(SE_SHUTDOWN_NAME);
    ExitWindowsEx(EWX_REBOOT, 0);
    return 0;
}
#endif

コード中の ExitWindowsEx(EWX_REBOOT, 0); を ExitWindowsEx(EWX_LOGOFF, 0); に変えればログオフするし、 ExitWindowsEx(EWX_SHUTDOWN, 0); に変えればシャットダウンする。

ソース: exit.zip


戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system