首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于RegDeleteKeyEx()的有关问题

2012-06-20 
关于RegDeleteKeyEx()的问题我想做一个开机自动运行,自动运行的代码写好了,可以写注册表,但删除注册表项错

关于RegDeleteKeyEx()的问题
我想做一个开机自动运行,自动运行的代码写好了,可以写注册表,但删除注册表项错了,具体如下。

C/C++ code
BOOL stopAutoRun(){        //删除注册表键,取消启动    HKEY hKey;    //找到系统的启动项    LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";    //打开启动项Key    long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);    if(lRet == ERROR_SUCCESS)    {        char pFileName[1024] = {0};        //得到程序自身的全路径         DWORD dwRet = GetModuleFileName(NULL, pFileName, 1024);        //添加一个子Key,并设置        lRet = RegDeleteKeyEx(hKey, "NotepadLock", KEY_WOW64_32KEY ,0);        //在这里调试时,lRet 的值是2,查了下,#define ERROR_FILE_NOT_FOUND 2L        //为什么会提示不存在??我用regedit看的都是存在的啊?                //关闭注册表        RegCloseKey(hKey);        if(lRet!= ERROR_SUCCESS )        {    if (lRet == ERROR_ACCESS_DENIED)                ::MessageBox(NULL,"操作失败,请以管理员权限重新运行此程序!","错误",0);            else                ::MessageBox(NULL,"操作失败,无法取消开机自动运行","错误",0);            return FALSE;        }        return TRUE;    }    ::MessageBox(NULL,"打开注册表错误!","错误",0);    return FALSE;}




请问下,这是怎么回事?难道是第二个参数传的不对?

[解决办法]
估计你需要的不是DeleteKey,而是RegDeleteValue

热点排行