请用C语言写一个可以快速关机的程序
时间: 2023-02-06 14:59:33 浏览: 62
在 Windows 操作系统中,可以使用下面的 C 代码快速关机:
#include <stdio.h>
#include <windows.h>
int main()
{
// 获取权限
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
printf("OpenProcessToken error: %d\n", GetLastError());
return 1;
}
// 设置权限
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0))
{
printf("AdjustTokenPrivileges error: %d\n", GetLastError());
return 1;
}
// 关机
if (!ExitWindowsEx(EWX_SHUTDOWN, 0))
{
printf("ExitWindowsEx error: %d\n", GetLastError());
return 1;
}
return 0;
}
注意:在执行关机操作时,需要有相应的权限。因此,代码中首先使用 OpenProcessToken 函数获取权限,然后使用 LookupPrivilegeValue 和 AdjustTokenPrivileges 函数设置权限,最后使用 ExitWindowsEx 函数执行关机操作。
在 Linux 操作系统中,可以使用下面的 C 代码快速关机:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
// 关机
if (system("shutdown -h now") != 0)
{
printf("shutdown error\n");
return 1;
}
return 0;
}
注意:在执行关机操作时,需要有相应的权限。因此,代码中使用 system 函数执行 shutdown 命令,此命令需要使用 root 权
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-dosexec](https://img-home.csdnimg.cn/images/20210720083343.png)