RegSetValueEx函数执行失败
时间:2011-12-06
来源:互联网
小弟是半路出家的三脚猫,VC算是一知半解吧,想自己做一个电脑锁屏的小软件,实现定时锁屏的功能。
昨天为实现屏蔽任务管理器的功能,找到了这篇文章 http://www.vckbase.com/document/viewdoc/?id=424,作者是用写注册表实现的, 我把源码载了下来, 自己新建了一个2008的MFC 对话框工程,把源码里的TaskKeyHook.h、TaskKeyMgr.cpp、TaskKeyMgr.h、TaskKeyHook.dll、TaskKeyHook.lib 加到自己的工程里面来,调试之后能用,可以实现写注册表,禁用任务管理器。
但是当我按同样的套路把源码里的文件加入到我的锁屏软件的工程里,调用结果却失败了,检查了一下发现问题出在RegSetValueEx()执行失败,返回结果不是ERROR_SUCCESS。但至于为什么失败我就郁郁不得其解了,在前面建立的测试工程里完全可以执行的RegSetValueEx(),为何在锁屏软件的工程就执行失败呢?望有高人解惑,不盛感激!
void CScreenLockDlg::OnBnClickedRadio2()//Disable TaskMgr
{
// TODO: 在此添加控件通知处理程序代码
HKEY hk;
if( ::RegOpenKeyEx(HKCU, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 0, KEY_READ|KEY_WRITE, &hk) )
::RegCreateKeyA(HKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", &hk);
DWORD val=1;
if( ERROR_SUCCESS == RegSetValueEx(hk, _T("DisableTaskMgr"), NULL,REG_SZ, (BYTE*)&val, sizeof(val)) ) //为什么RegSetValueEx失败呢?
{
MessageBox(_T("RegSet Success"));
}
else
{
CString str;
str.Format(_T("%lu"), ERROR_SUCCESS);
MessageBox(str);
}
}
我把完整的工程传到网盘里了,地址是http://www.rayfile.com/zh-cn/files/9f274b91-1fc2-11e1-8654-0015c55db73d/
昨天为实现屏蔽任务管理器的功能,找到了这篇文章 http://www.vckbase.com/document/viewdoc/?id=424,作者是用写注册表实现的, 我把源码载了下来, 自己新建了一个2008的MFC 对话框工程,把源码里的TaskKeyHook.h、TaskKeyMgr.cpp、TaskKeyMgr.h、TaskKeyHook.dll、TaskKeyHook.lib 加到自己的工程里面来,调试之后能用,可以实现写注册表,禁用任务管理器。
但是当我按同样的套路把源码里的文件加入到我的锁屏软件的工程里,调用结果却失败了,检查了一下发现问题出在RegSetValueEx()执行失败,返回结果不是ERROR_SUCCESS。但至于为什么失败我就郁郁不得其解了,在前面建立的测试工程里完全可以执行的RegSetValueEx(),为何在锁屏软件的工程就执行失败呢?望有高人解惑,不盛感激!
void CScreenLockDlg::OnBnClickedRadio2()//Disable TaskMgr
{
// TODO: 在此添加控件通知处理程序代码
HKEY hk;
if( ::RegOpenKeyEx(HKCU, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 0, KEY_READ|KEY_WRITE, &hk) )
::RegCreateKeyA(HKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", &hk);
DWORD val=1;
if( ERROR_SUCCESS == RegSetValueEx(hk, _T("DisableTaskMgr"), NULL,REG_SZ, (BYTE*)&val, sizeof(val)) ) //为什么RegSetValueEx失败呢?
{
MessageBox(_T("RegSet Success"));
}
else
{
CString str;
str.Format(_T("%lu"), ERROR_SUCCESS);
MessageBox(str);
}
}
我把完整的工程传到网盘里了,地址是http://www.rayfile.com/zh-cn/files/9f274b91-1fc2-11e1-8654-0015c55db73d/
作者: lovelynight 发布时间: 2011-12-06
GetLastError查看错误嘛。
C/C++ code
C/C++ code
DWORD val=1; if( ERROR_SUCCESS == RegSetValueEx(hk, _T("DisableTaskMgr"), NULL,REG_SZ, (BYTE*)&val, sizeof(val)) ) //为什么RegSetValueEx失败呢? { MessageBox(_T("RegSet Success")); } else { CString str; str.Format(_T("%lu"), GetLastError()); MessageBox(str); }
作者: WaistCoat06 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28