- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑下面的代码
addHash("hash");
bool addHash(char* hash) {
HKEY hKey = 0;
int code = RegOpenKey(HKEY_CURRENT_USER, subkey, &hKey);
const int length = strlen(hash)+1;
WCHAR whash[100];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, hash, strlen(hash), whash, 100);
LONG setRes = RegSetValueEx(hKey, L"hash", 0, REG_SZ, (LPBYTE)whash, strlen(hash)+1);
return true;
}
代码被编译和执行后,“ha”被放入注册表。谁能告诉我问题出在哪里?
提前致谢!
最佳答案
最后一个参数是倒数第二个参数指向的字节数,而不是字符数。
因此whash
的前五个字节(strlen(hash) + 1
)将被存储在注册表中。更改为:
LONG setRes = RegSetValueEx(hKey,
L"hash",
0,
REG_SZ,
(LPBYTE)whash,
(wcslen(whash) + 1) * sizeof(WCHAR));
您可能还需要初始化 whash
(我认为 MultiByteToWideChar()
不会为您添加空终止符):
WCHAR whash[100] = { 0 };
关于c++ - RegSetValueEx 和 CHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067598/
在我的应用程序中,当我第一次使用 RegSetValueEx() 设置键值时它有效,但是当我尝试使用相同的函数更改值时它不起作用,值保持不变。我做错了什么? 代码如下: SetSZValue( "My
我正在使用 RegSetValueEx 设置注册表项。问题是它只写前 2 个字符。我可以让 RegSetValueExA(ANSI 版本)工作,但我的项目在属性中设置为 Unicode,所以我想使用
我遇到的问题是我的应用程序将不正确的数据输入到注册表中(而不是文件路径,它输入了诸如“㩃喝法获得喝法屲灁”之类的字符)而且我不知道问题是什么,下面是相关的源代码(包括等已被删除)。 stringstr
我创建了一个小的 vb6 应用程序,用于编辑 HKLM 配置单元中的注册表。它利用函数 RegSetValueEx .但是当在windows 7和windows 8 pc中运行exe文件时,即使以管理
我正在对数据进行 (char *) 转换,但我在注册表中只获得了一个 char 值。如果我不使用转换 msvc 2010 告诉我参数类型 LPCTSTR 与 const char * 不兼容。 谁能帮
我怀疑 RegSetValueEx 是线程安全的,但希望得到社区的一些确认。如果多线程调用,会不会有副作用? RegSetValueEx MSDN documentation根本没有提到线程安全。 最
我在以下代码中使用了 RegSetValueEX,它将值设置为难以理解的字符(中文外观)。我在猜测整个美丽的编码世界? HKEY regKey; std::string newIP = "192.16
在下面的代码中,RegSetValueEx 只写了我的字符串的第一个字母。我试过将大小更改为我能想到的任何大小,但我只得到了第一个字符串。感谢您的帮助。 LPCWSTR path = L"Test S
尝试将我的程序写入 Windows 注册表,但我的代码告诉我在执行 RegSetValueEX() 时出现错误。我有管理权限。我根本看不出出了什么问题,而且我一整天都盯着 REG 上的 MSDN 页面
我正在编写这段 C 代码,它将在注册表中存储一个键,该键指向应用程序的当前路径。这是代码。 HKEY hKey; LPCTSTR appPath; LPCTSTR regPath = TEXT("SO
考虑下面的代码 addHash("hash"); bool addHash(char* hash) { HKEY hKey = 0; int code = RegOpenKey(HKE
我正在尝试从我的 C++ 应用程序中写入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,如下所示: HKEY key
我试图在 C++ 中向注册表添加一个值,但程序显示错误。我有一个非常简单的代码,当程序运行时出现错误:无法设置注册表值 value_name(RegSetValueEx 失败) #include #
我正在尝试将数据写入注册表,但它总是写入外语,因为设置值为“MyApp” CStringA temp(setvalue);//setvalue is CString type const BYTE*
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我有一些关于注册表相关功能的问题。我使用 RegSetValueEx 函数来创建注册表数据,但不幸的是我肯定做错了,但我不确定错误在哪里。我想在 HKEY_LOCAL_MACHINE - SOFTWA
我有一个将 calc.exe 添加到启动的简单程序: #include #include int main(){ _tprintf(TEXT("Adding calc.exe to SOF
作为新手 C++ 程序员,我想在 Windows 注册表中设置一个值。我创建了这个教科书实现来完成这个,但我总是得到错误 998。我想我错过了一些非常简单明了的东西,但我不知道它是什么。 以普通用户或
标题几乎说明了一切,当我尝试使用 RegSetValueEx 制作一个 REG_SZ 大小的条目时,我得到一个 REG_EXPAND_SZ 当我看看注册表。 这是我正在使用的代码 const char
我正在编写一个用于在注册表上设置键/值的函数。我有一个问题: 我调用 RegOpenKeyEx() 并返回 ERROR_SUCCESS 和 然后我调用 RegSetValueEx 来设置键/值,但它返
我是一名优秀的程序员,十分优秀!