RegSetValueEx函数执行失败
小弟是半路出家的三脚猫,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/