首页
社区
课程
招聘
[旧帖] [求助]RegQueryValue 在release里面返回错误,debug是正确的 0.00雪花
发表于: 2012-12-28 17:35 1240

[旧帖] [求助]RegQueryValue 在release里面返回错误,debug是正确的 0.00雪花

2012-12-28 17:35
1240
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
HKEY hKEY = NULL;
        LPCSTR thunderpath = ("Applications\\Thunder.exe\\shell\\Open\\command");

        char cvPath[MAX_PATH] = {0};
        long dw;
        long r = RegQueryValue(HKEY_CLASSES_ROOT , thunderpath , cvPath , &dw);
        if (r != ERROR_SUCCESS)
        {
                AfxMessageBox("查询注册表值失败");
                return ;
        }
        CString path;
        path.Format("%s" , cvPath);
        int l = path.ReverseFind(' ');
        CString tt = path.Left(l);
        ShellExecute(NULL , "Open" , tt , NULL , NULL , SW_SHOW);

这是代码,在release下面提示查询失败,在debug下面是好的
2012-12-28 22:28
0
雪    币: 36
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
权限问题,debug 权限比较大, 提权一下就可以了
BOOL EnableDebugPriv()
{
        HANDLE hToken;
        TOKEN_PRIVILEGES tkp;
        LUID Luid;

        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
        {
                return FALSE;
        }

        if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid ))
        {
                CloseHandle(hToken);
                return FALSE;
        }

        tkp.PrivilegeCount = 1;
        tkp.Privileges[0].Luid = Luid;
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

        if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
        {
                CloseHandle(hToken);
                return FALSE;
        }
        return TRUE;
}
2012-12-29 10:41
0
游客
登录 | 注册 方可回帖
返回
//