也就是说如何知道当前修改的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SystemService下面的值?谢谢!!

解决方案 »

  1.   


    先要通过 RegOpenKeyEx 函数打开!
      

  2.   

    CString StrFilter="可执行性文件(*.exe)|*.exe|所有文件(*.*)|*.*||";
    CFileDialog Dlg(TRUE,NULL,NULL,NULL,StrFilter,this);
    if(Dlg.DoModal()==IDCANCEL)
    return;
    HKEY hKey;
    LPCTSTR StrKey=
            "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SystemService";
    if(ERROR_SUCCESS==
            ::RegOpenKeyEx(HKEY_CURRENT_USER,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
    {
    CString Value=Dlg.GetPathName();
    LPCSTR KeyValue=Dlg.GetFileTitle();
    if(ERROR_SUCCESS==::RegSetValueEx(hKey,(LPCTSTR)KeyValue,0,REG_SZ,
    (BYTE *)(LPCSTR)Value,strlen(Value)+1))
    {
    AfxMessageBox("设置程序为系统启动时自动运行!");
    }
    //::RegDeleteValue(hKey,(LPCTSTR)KeyValue);
    ::RegCloseKey(hKey);
    }
      

  3.   

    您们误解了我的意思,我现在是要做一个HOOK,拦截RegSetValueEx,如果hKey要修改的是我自己的注册表项,就返回错误的值,所以只能从hKey知道要修改的项。
      

  4.   

    RegMon专门干这个的。用到的技术可能是HOOK。