回 帖 发 新 帖 刷新版面

主题:vs2008 unicode工程写入注册表出错

本人最近在做一个桌面辅助工具,碰到一个问题如下:

    HMODULE hModule=NULL;
    HKEY key;
    CString svRunRegKey;
    TCHAR svFileName[512], svFullPath[524];
    ::GetModuleFileName(hModule,svFileName,512);
    wsprintf(svFullPath,L"\"%s\"",svFileName);
    svRunRegKey=L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
    if(isWrite)
    {
        HKEY key;

        if (RegOpenKey(HKEY_LOCAL_MACHINE,svRunRegKey,&key)==ERROR_SUCCESS) 
            if (RegSetValueEx(key,L"Process",0,REG_SZ,(BYTE *)svFullPath,lstrlen(svFullPath) )==ERROR_SUCCESS) 
                RegCloseKey(key);

开发环境是VS2008,工程用的是UNICODE字符集,结果写入到注册表run下面是键值,就是那个程序路径老是被截断了一截,如下:

        "d:\Backup\我的文档\Visual Studio 2008\P
路径老是错误的,请问那位大师能解释一下,最好能通过代码讲解一下关于UNICODE下的写入注册表················,不胜感激。

回复列表 (共1个回复)

沙发

首先声明,发错地方了 ,怪不到大家没人理我,本人问题已经解决,说明如下:
  
        我用的是unicode字符集,一个字符占两个字节,故所需的缓冲区,为,(BYTE *)svFullPath的两倍。
        OK。

我来回复

您尚未登录,请登录后再回复。点此登录或注册