• Thứ Ba, 18/09/2007 10:39 (GMT+7)

    Chương trình Shutdown máy tính bằng ngôn ngữ C++.

    Câu hỏi :
    Xin chỉ cách viết chương trình Shutdown máy tính bằng ngôn ngữ C++. 
     

    Trả lời :

    Trong chương trình ứng dụng được viết bằng bất kỳ ngôn ngữ nào, miễn sao có thể gọi hàm API Windows, bạn đều có thể yêu cầu Windows shutdown bằng cách gọi hàm API Windows có tên là ExitWindows() hay ExitWindowsEx(). Ngoài ra để shutdown thành công, ứng dụng của bạn cũng cần xin quyền SE (Shutdown Enabled) bằng cách gọi hàm API tên là AdjustTokenPrivileges(). Sau đây là đoạn code C++ điển hình để shutdown Windows NT (hay Win2000, WinXP):
     
     //khai báo các biến cần dùng
     HANDLE hToken;
     TOKEN_PRIVILEGES tkp;
     //Tìm token của process ứng dụng hiện hành.
     if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
     error("OpenProcessToken");
     //Tìm LUID của "shutdown privilege"
     LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
     //Thiết lập quyền SE cho process ứng dụng hiện hành.
     tkp.PrivilegeCount = 1; // thiết lập 1 quyền
     tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
     AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
     //kiểm tra và báo lỗi kết quả.
     if (GetLastError() != ERROR_SUCCESS)
     error("AdjustTokenPrivileges");
     //Shutdown Windows và buộc tất cả ứng dụng kết thúc
     if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
     error("ExitWindowsEx"); 
     

    Chuyên mục: Lập trình