1.涉及的编程工具是:VS2013;可以在windows环境下,编写web,JavaScript,C++,C等等程序;
2.第一个需要掌握的函数是:ExitWindowsEx(EWX_REBOOT, 0);该函数用来重启,关闭,注销电脑;
3.使用该函数必须先,包含windows的API:
#include <windows.h>
4.权限问题,代码解决:
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return(FALSE);
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, //ExitWindowsEx是系统提供的API,要使用它,必须先提权;
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED))
return FALSE;
//shutdown was successful
return TRUE;
}
3.VS2013中的项目设置:
(1)项目->属性->常规->平台工具集,选择XP;这样可以使得程序在XP及其以上的系统中,运作;
(2)项目->属性->C++->代码生成->运行库->选择多线程(/MT)
4.用代码来更改注册表的设置,注册表其实就是windows的配置文件:
HKEY hKey = { 0 }; //初始化,承载注册表,代表注册表修改位置的句柄
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_WRITE,&hKey); //注册表的路径,必须是“//”
char sz_path_c[MAXBYTE] = { 0 };
GetModuleFileNameA(nullptr,sz_path_c,MAXBYTE);
RegSetValueExA(hKey, "shutDownDeno", 0, REG_SZ, (BYTE*)sz_path_c, strlen(sz_path_c)); //写入注册表的函数
5.系统开机启动,有不下5个地方可以写入;破解方法:
(1)开机按F8:进入安全模式。在安全模式下:
删除注册表的选项;
(2)安全模式下:删除这个软件;
6.影子系统
影子系统 ,是隔离保护Windows操作系统,同时创建一个和真实操作系统一模一样的虚拟化影像系统。进入影子系统后,所有操作都是虚拟的,所有的病毒和流氓软件都无法感染真正的操作系统。系统出现问题了,或者上网产生垃圾文件,只需轻松的重启电脑,一切又恢复最佳状态。