win7 vs08 MFC 开机启动 RegSetValueEx返回5

Brighttll 2010-01-12 04:57:25
环境如题,网上搜索资料基本一致,代码如下:
BOOL CGetTimeDlg::SetAutoRun(CString strPath)//开机自动运行,strPath为exe路径
{
CString str;
HKEY hRegKey;
BOOL bResult;
str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)
bResult=FALSE;
else
{
_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_PATH+1),NULL);
strPath.ReleaseBuffer();
str.ReleaseBuffer();
if(::RegSetValueEx( hRegKey,str,0,REG_SZ,(CONST BYTE *)strPath.GetBuffer(0),strPath.GetLength() )!=ERROR_SUCCESS)
bResult=FALSE;
else
bResult=TRUE;
strPath.ReleaseBuffer();
}

return bResult;
}

RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey)返回为0,表示成功,而
(::RegSetValueEx( hRegKey,str,0,REG_SZ,(CONST BYTE *)strPath.GetBuffer(0),strPath.GetLength() )返回为5,郁闷一下午,没找到究竟,希望高手解答.刚注册,没多少分,希望大虾们别介意
...全文
775 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽游闭关 2012-04-17
  • 打赏
  • 举报
回复
win7下怎么样才可以越过UAC读写注册表
周星星的星 2010-06-02
  • 打赏
  • 举报
回复
遇到同样问题,建议用RegOpenKey
周星星的星 2010-06-02
  • 打赏
  • 举报
回复
遇到同样问题,建议用RegSetValue
machaoys 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangsheng 的回复:]

5=Access Denied

开机的时候访问UAC保护的注册表会被拒绝。
[/Quote]

怎样才能得到修改权限呢?
Brighttll 2010-01-14
  • 打赏
  • 举报
回复
知道问题所在了,F5调试时,由于win7在该情况下没有权限,所以RegSetValueEx始终返回值为5.但是程序本身并没有问题,在debug文件夹以管理员身份运行该exe即可。还发现一个问题,如果编译环境为Unicode,则
(CONST BYTE *)strPath.GetBuffer(0),strPath.GetLength()无法得到正确的exe路径长度,导致exe路径无法得到,需要
TCHAR tCharPath[MAX_PATH];
wcscpy_s(tCharPath, MAX_PATH, strPath);
if (::RegSetValueEx (hRegKey, _T("LedPlayerManage"), 0, REG_SZ, (LPBYTE) tCharPath, (DWORD) (_tcslen(tCharPath)*sizeof(TCHAR)+1))!=ERROR_SUCCESS)
利用TCHAR才能得到正确exe路径
jason176374 2010-01-13
  • 打赏
  • 举报
回复
5:没有权限!

WIN7和VISTA一样,受限于UAC。
辛鹤 2010-01-13
  • 打赏
  • 举报
回复
UP
jiangsheng
蒋晟 2010-01-13
  • 打赏
  • 举报
回复
5=Access Denied

开机的时候访问UAC保护的注册表会被拒绝。
MoXiaoRab 2010-01-12
  • 打赏
  • 举报
回复
strPath.ReleaseBuffer();之后你再RegSetValueEx?
Brighttll 2010-01-12
  • 打赏
  • 举报
回复
MSDN上如是说
RegSetValueEx(HKEY hKey,.....);
hKey
A handle to an open registry key. The key must have been opened with the KEY_SET_VALUE access right.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧