C++程序屏蔽windows2008系统安全界面(ctrl+alt+delete热键)
win7,win8系统与winxp系统不一样,ctrl+alt+delete热键会打开一个安全界面,而不仅仅是打开任务管理系统,而安全界面是由进程winlogon.exe来控件的,就是说,在按下热键的时候会首先激活进程winlogon.exe进程,然后再做其他事,因此不能用钩子来屏蔽ctrl+alt+delete热键,这里采用的是将winlogon.exe进程挂起的办法:
提升权限函数
bool EnableDebugPrivilege(bool bEnableDebugPrivilege)
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
LUID luid;
if(!::OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
//::MessageBox(this->GetSafeHwnd(), GET_TOKEN_ERROR, MSG_BOX_TITLE, MB_OK);
return FALSE;
}
if(!::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid))
{
// ::MessageBox(this->GetSafeHwnd(), GET_PRIVILEGE_VALUE_ERROR, MSG_BOX_TITLE, MB_OK);
::CloseHandle(hToken);
return FALSE;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if(bEnableDebugPrivilege)
{
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
}
else
{
tp.Privileges[0].Attributes = 0;
}
if(!::AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL))
{
// ::MessageBox(this->GetSafeHwnd(), ADJUST_PRIVILEGE_ERROR, MSG_BOX_TITLE, MB_OK);
::CloseHandle(hToken);
return FALSE;
}
::CloseHandle(hToken);
if(::GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
// ::MessageBox(this->GetSafeHwnd(), ENABLE_DEBUG_ERROR, MSG_BOX_TITLE, MB_OK);
return FALSE;
}
return TRUE;
}
通过进程名称获取进程ID
DWORD GetProcessIdFromName(QString Name, LPTSTR szID)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hsnapshot,&pe))
return 0;
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if(Process32Next(hsnapshot,&pe)==false)
break;
QString str = QString::fromWCharArray( pe.szExeFile );
if(Name.compare( str ) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(1);
CloseHandle(hsnapshot);
if(szID == NULL) return id;
char lpID[10];
itoa(id, lpID, 10);
strcpy((char*)szID, lpID);
return id;
}
//winLogon.exe进程挂起与恢复
bool TaskScreen( bool type )
{
bool bRet = EnableDebugPrivilege(true);//提权
if( !bRet )
{
return false ;
}
LPTSTR csPath = NULL;
QString pName = "winlogon.exe";
DWORD dwId;
dwId = GetProcessIdFromName(pName,csPath);//获取进程ID
HANDLE hProcess;
if (0 != dwId)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwId);
if(NULL != hProcess)
{
//动态加载dll库
HMODULE h_module=LoadLibrary(L"ntdll.dll");
if( !type )
{
//进程挂起
NtSuspendProcess m_NtSuspendProcess = (NtSuspendProcess)GetProcAddress(h_module,"NtSuspendProcess");
DWORD dwRet = m_NtSuspendProcess(hProcess);
DWORD dwErr = GetLastError();
}
else
{ //进程恢复
NtResumeProcess m_NtResumeProcess = (NtResumeProcess)GetProcAddress(h_module,"NtResumeProcess");
DWORD dwRet = m_NtResumeProcess(hProcess);
DWORD dwErr = GetLastError();
}
//采放动态库
FreeLibrary(h_module);
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
注:通过非正常关闭程序,会造成winlogon.exe进程挂起后不能恢复
C++程序屏蔽windows2008系统安全界面(ctrl+alt+delete热键)相关推荐
- Windows 2008系统如何取消Ctrl+Alt+Delete组合键登录
如何取消登录时要按Ctrl+Alt+Delete组合键登录呢? 教你方法如下: 点桌面任务栏的"开始-->运行"在弹出的窗口中输入gpedit.msc . 输入gpedit. ...
- Windows 10系统如何使用Ctrl+Alt+Delete解锁屏幕?
Win10系统在屏幕保护界面中只要按下随机按键或者鼠标按键都可以进入电脑界面,这样就容易被别人无意点开电脑屏幕造成资料泄漏,有没有办法可以设置解锁屏幕的触发按键呢?参见下文. 解决方法: 1.在小娜C ...
- 服务器按ctrl alt delete没有用_用完这些快捷键,我再也回不去了(Win系统篇)
日常学习与办公中,电脑与我们可谓是形影不离.每天面对电脑,如果能熟练掌握Windows系统的快捷操作,一定能让你的办公效率事半功倍!下面,小编就带大家盘点一些在Windows系统中常见的那些快捷操作吧 ...
- Linux下屏蔽Ctrl+Alt+Delete
1.Redhat 5.X/CentOS5.X -------------------------------------- 使用Root账户登陆系统,修改/etc/inittab # Trap CTR ...
- windows server系统,登录系统提示按下 ctrl+alt+delete
不管是 阿里云 腾讯云 还是其他华为云 百度云等等的windows服务器,基本上都是每次在网页端的远程登陆windows系统都会提示题目中的信息.因为这些云计算厂商提供的网页端登陆,都相当于" ...
- Linux CTRL+ALT+DELETE
在Windows服务器上,按CTRL+ALT+DELETE可弹出任务管理器.登录注销的对话框 但在Linux服务器上,如果不慎按了CTRL+ALT+DELETE,则系统会立刻重启 当前工作状态下的程序 ...
- 应用热启动(Ctrl+Alt+Delete)在显示频中进行监控的应用
这一编写是根据上篇"在下载Windows XP 中病毒的思考回忆"里我们认识道"热启动(Ctrl+Alt+Delete)"在运行中起到一些应用解决的问题:同时 ...
- 阿里云服务器ECS按ctrl+alt+delete无法登录
今天在使用阿里云服务器远程桌面的时候发现怎么也进入不了,远程桌面无法连接,于是想到了在阿里云服务器管理控制台可以使用连接管理终端进行远程桌面连接,下面详细介绍阿里云服务器操作经验. 操作步骤如下 登录 ...
- Win上按Ctrl+Alt+Delete可调出任务管理器,Mac呢?
梗叔在使用macOS快两年了,得益于macOS系统优化方面下了不少功夫,基本上没出现Mac卡死现象,最近梗叔有点作死,Steam下载城市天际线,128GB乞丐版本的Macbook Air在内存慢的情况 ...
最新文章
- 独家 | 图片主题建模?为什么不呢?!
- Python微型Web框架Bottle源码分析
- mysql syncbinlog_Mysql之sync-binlog参数
- HashMap HashTable HashSet区别剖析
- js 实现图片旋转角度
- jquery设置video的宽度_jquery html5 视频播放控制代码
- JAVA 计算地球上任意两点(经纬度)距离
- pytorch--torch.zeros()怎么使用
- DLL文件反编译(附:工具下载链接)
- 小马哥spring编程核心思想_《Spring Boot编程思想(核心篇)》小马哥著 PDF电子书下载...
- js正则贪婪模式_js 正则表达式问题 贪婪与非贪婪
- 用计算机数字技术制作的电影是,计算机数字技术为电影带来的空前发展.doc
- HTML入门笔记(带源文件)
- html图片标签img的介绍以及基本用法详解
- 中国的地理位置的表述
- wannier插值能带拟合2
- 【VBA研究】用Ping命令测试IP地址是否通达
- python 计算TIFF图像相关性 根据相关性筛选特征 使用PCA提取主要特征
- 高德地图API 添加标点 自定义标点
- 雨水弃流装置详细说明
热门文章
- beautiful_sky(Bugku)
- java 推广海报_使用java画一张海报
- 药店管理系统源码 药店管理信息系统源码带文档
- 腾讯推页游平台’”页游乐园”YY.QQ.com
- 经济的寒冬,数据的春天
- package-info类
- python中用什么函数读取字符串_Python(2)字符串的主要方法
- Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon‘ 错误
- linux删除文件夹下所有文件_linux下共享文件夹(windows可访问,linux也可访问)...
- 同字母异序词 python_Python初学者必学的20个重要技巧