win7上RegOpenKeyEx返回ERROR_ACCESS_DENIED异常,XP上很正常,何解

win7下RegOpenKeyEx返回ERROR_ACCESS_DENIED错误,XP下很正常,何解?
在XP下打开了键然后就可以直接修改了,毫无问题,而WIN7下仅仅打开都打开不了,这是为什么?一样的代码,一字不改。
莫非是要权限?WIN7下就是用管理员运行都一样的结果,我也有在程序下加了下面的代码(因为我看见有一哥说他就是提权然后就可以了):
C/C++ code

BOOL raisePrivileges(HANDLE hProcess)
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    tkp.PrivilegeCount=1;
    tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    if(OpenProcessToken(hProcess,TOKEN_ALL_ACCESS,&hToken))
    {
        if(LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid))
        {
            AdjustTokenPrivileges(hToken,FALSE,&tkp,NULL,(PTOKEN_PRIVILEGES)NULL,0);
        }
        else
            return FALSE;
    }
    else
        return FALSE;

    return TRUE;
}



用来提权,似乎一样的结果,什么用都没有,到底是怎么回事的?

------解决方案--------------------
你告诉我你要打开的键是什么,windows7下有的键安全限制更高。
SE_DEBUG_NAME是用于绕过dacl打开进程的。
如果要绕过dacl打开键,启用SE_BACKUP_NAME和SE_RESTORE_NAME特权
然后使用RegCreateKeyEx打开键,dwOptions=REG_OPTION_BACKUP_RESTORE
------解决方案--------------------
是要替换系统服务吧?找个存在键值但实际并未安装的服务试试?