RegDeleteKeyEx
场景:关于RegDeleteKeyEx()的有关问题
关于RegDeleteKeyEx()的问题
我想做一个开机自动运行,自动运行的代码写好了,可以写注册表,但删除注册表项错了,具体如下。
请问下,这是怎么回事?难道是第二个参数传的不对?
------解决方案--------------------
估计你需要的不是DeleteKey,而是RegDeleteValue
关于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