3

您好,我正在尝试创建一个程序路径并放入注册表文件中,但我一直出错。这是代码:

#include <iostream> 
#include <windows.h> 
#include <winuser.h> 
#include <tchar.h>
#include <limits>

using namespace std;

void reg() {
char buffer[MAX_PATH];

GetModuleFileName(NULL,buffer,sizeof(buffer));

const unsigned char Path[ MAX_PATH ] = {buffer};

::HKEY Handle_Key = 0;

::RegSetValueEx( Handle_Key, "My Directory", 0, 1, Path, sizeof Path  );
};

我得到的错误说

从 'char*' 到 'unsigned char' 的无效转换 [-fpermissive]

我花了几个小时寻找解决方案,但我找不到。

4

1 回答 1

2

问题,我猜,是这条线

const unsigned char Path[ MAX_PATH ] = {buffer};

这里的问题是您尝试使用字符指针创建单个字符的数组。

您仅将该变量用作RegSetValueEx调用的临时变量,因此您并不需要它。而是直接调用该函数buffer

此外,您不应该sizeof在此处使用,因为这会将所有缓冲区放入注册表中,而不仅仅是实际的字符串。使用strlen.

喜欢:

::RegSetValueEx( Handle_Key, "My Directory", 0, 1,
                 reinterpret_cast<unsigned char*>(buffer),
                 strlen(buffer));
于 2013-07-22T10:18:24.667 回答