程序开机全屏且不能见任何windows界面、不能使用系统热键

需求的提出:

  1.  自己编写的程序开机全屏运行
  2.  不能见到任何windows界面,不能见到资源管理器、任务栏、win 、win + L、ALT + CTL + DEL组合键等系统键都不能用。
  3.  用户只能见到自己编写的程序界面,只能在自己编写的程序上进行鼠标、键盘操作、关机操作等。

第1点很容易实现,程序全屏这个很容易,当今主流的C++开发包,如:MFC、qt等都能做到。

第2点编程实现有难度,但可以通过windows注册表和组策略来实现。win环境下,用你的程序代替explorer.exe启动,就可以实现不能见到任何windows界面,不能见到资源管理器、任务栏;win 、win + L按键不起作用,方法如下:

有两种方式可以快速完成以上效果

a:“运行” 输入“%windir%\system.ini”,“确定”
在“; for 16-bit app support”首行下按回车键加入以下两行内容,保存
[boot] 
shell=你程序的绝对路径

例如:

[boot]

shell=D:\Test\fuck.exe

b:“运行” 输入“regedit”,打开注册表

找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
修改该分支下的Shell值“explorer.exe”为“D:\Test\fuck.exe”

OK,重启,搞定。

其中b方法的C++代码实现如下:

void CEmergencyModeWnd::doWinExplorer(bool bEnableoWinExplorer/* = false*/)
{
	bool bRet = false;
	HKEY hKey;
	wstring strRegPath = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";

	// 1、找到系统的启动项  
	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath.c_str(), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) ///打开启动项       
	{
		// 2、得到本程序自身的全路径
		TCHAR strExeFullDir[MAX_PATH];
		GetModuleFileName(NULL, strExeFullDir, MAX_PATH);

		if (!bEnableoWinExplorer)
		{
			RegSetValueEx(hKey, L"Shell", 0, REG_SZ, (LPBYTE)strExeFullDir, (lstrlen(strExeFullDir) + 1) * sizeof(TCHAR));
		}
		else
		{
			RegSetValueEx(hKey, L"Shell", 0, REG_SZ, (LPBYTE)L"explorer.exe", (lstrlen(L"explorer.exe") + 1) * sizeof(TCHAR));
		}


		RegCloseKey(hKey);
	}
}

 

ALT + CTL + DEL组合键可以通过组策略来实现,参考《如何禁用ALT+CLT+DEL组合键》,需要说明的是:这样当自己编写的程序崩溃时,因为不能见到任何windows界面,不能见到资源管理器、任务栏、win 、win + L、ALT + CTL + DEL组合键等系统键都不能用,除了重装系统外,别无它法,也就是我们所说的肉鸡。为了解决肉鸡问题,我们需要留个后门,

比如:当自己编写的程序开机运行起来后第一个界面出现时,在该界面类中实现按clt + shift +k键能调出如下界面进行急救(注意:这个界面应该保证无论如何都不会出现异常、崩溃从而导致出不来,否则下面的方法依然不能解决肉鸡问题):

启用windows程序管理器、禁用windows程序管理器就是调用上面的函数从而将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon中的shell改为自己的程序或者是windows程序管理器explorer.exe(这样开机时就可以进入桌面,看到windows的界面和资源管理器了),打开注册表用C++代码实现如下:

system("regedit.exe");

打开组策略代码如下:

system("gpedit.msc");

这样就可以通过操作注册表来手动更改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon中的shell是改回windows程序管理器explorer.exe(这样开机时就可以进入桌面,看到windows的界面和资源管理器了)、手动更改组策略从而启动任务管理器,如下:

单击右侧红色框中项,来启用相应的项,如:任务管理器

选择”未配置“或者”已禁用“则就开启了相应的项,如:任务管理器 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值