- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
作为新手 C++ 程序员,我想在 Windows 注册表中设置一个值。我创建了这个教科书实现来完成这个,但我总是得到错误 998。我想我错过了一些非常简单明了的东西,但我不知道它是什么。
以普通用户或管理员身份运行此代码没有任何区别。
#define LEDPORT 3
#define SUBKEY "SOFTWARE\\PATH\\OTHERPATH\\"
HKEY key;
if(RegCreateKey(HKEY_LOCAL_MACHINE, TEXT(SUBKEY), &key) == ERROR_SUCCESS)
{
HKEY createKey;
DWORD value = LEDPORT;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT(SUBKEY), NULL, KEY_ALL_ACCESS, &createKey) == ERROR_SUCCESS){
// retVal returns error 998 and the value isn't set
int retVal = RegSetValueEx(createKey, TEXT("PortNumber"), NULL, REG_DWORD, (BYTE *)value, sizeof(value));
RegCloseKey(createKey);
}
}
实际上,这会在 LocalMachine\Software\Path\OtherPath 中创建提到的键,但 DWORD 值“PortNumber”不是。
同样,我认为这很简单,但我花了几个小时思考它可能是什么,但我想不出来。
最佳答案
转换为人类可读的错误代码 998 是 对内存位置的无效访问。 原因是您的转换 (BYTE*)value
,重新解释值 3 (LEDPORT
) 作为一个地址。 (BYTE*)&value
解决了您眼前的问题。
关于c++ - RegOpenKeyEx 和 RegSetValueEx 失败,但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007307/
我正在尝试使用 winapi (0.2.8) 和 advapi32 (0.2.0) 包来编辑与鼠标加速相关的注册表。每次调用 advapi32::RegOpenKeyExA 时,程序都会崩溃,结果值会
我在读取注册表时遇到问题。此函数查找注册表路径中的条目数。效果很好,我已经测试过了: void findNumberEntries(registryTest &INSTALLKEY) { char b
我的程序应该枚举已安装的 OPOS 设备。它们列在注册表中,所以我使用 RegOpenKeyEx 如下: LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE
我正在使用带有 mingw 的 Qt 来编写一个更改注册表的程序,但是当我调用时: RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\M
在工作中我遇到了我们产品的一个奇怪的行为,发现可以归结为Windows API RegOpenKeyEx 的奇怪行为。下面是我的测试代码: #include #include #include
MSDN 文档: http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx 对于此函数可能返回的错误,奇怪地保持沉默。 如果 key 不
我正在尝试使用以下代码在 Windows 7 x64 下读取注册表项: static void ReadRegistryKey(HKEY hkey, TCHAR* path) { HKEY hkey2
我想写入一个注册表值 HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\Identity => key = tName , value="u
我需要从注册表中获取路径。除了我存储字符串路径的最后一部分外,以下代码有效。在 Visual Studio 2008 中运行调试器,char 数组有路径,但其他每个字符都是零。这导致字符串仅被分配第一
我想获取 HKEY_CLASSES_ROOT\\SOFTWARE\\Classes\\CLSID 键下的所有 CLSID 键。 我知道该 key 是合并的 HKEY_LOCAL_MACHINE\\SO
我对 RegOpenKeyEx() 函数有疑问。 lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKeyName, 0, KEY_READ, &hkMo
在 Windows 7(32 位)中,如果我不是在管理员模式下运行,当我在 HKEY_LOCAL_MACHINE 上调用::RegOpenKeyEx 时,我总是会收到错误 5(访问被拒绝)。 这是我的
我正在尝试用 C 语言编写简单的程序,该程序可以从 Windows 注册表中写入和读取某些内容。 RegOpenKeyEx 的返回值 7 意味着什么? 我很难猜出它。是的,MSDN 说我可以使用 Fo
您好,我正在尝试读取为我提供 firefox.exe 路径的注册表值。这存储在 HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\b
注册表函数在确实存在的键上返回“未找到”。我有正确的字符集并使用双反斜杠,所以这不是问题。 这是导出 key 的输出: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\N
我正在使用 this solution在 64 位机器上读取 32 位注册表。我是这样使用它的: GetKeyValue("\\software\\company", name); 其中 name 是
在 Microsoft Visual C++ 中,我有以下代码来访问注册表中的路径。然后,我使用 RegQueryValueEx 读取键 Installed 的值。到目前为止一切顺利,该值似乎是 1,
我有一段代码可以查找注册表项。在下面的当前形式中,它在 Vista 和 7 上运行良好,但在 XP 上返回错误代码 2 或 87。 当前代码(适用于 XP 以上版本): dwRet = RegOpen
我正在测试以下代码并收到错误:“RegOpenKeyEx 失败,错误 6:句柄无效”,我做错了什么?我正在使用 WinXP,MS VS 2010,以 Unicode 编译。 HKEY hKey; if
作为新手 C++ 程序员,我想在 Windows 注册表中设置一个值。我创建了这个教科书实现来完成这个,但我总是得到错误 998。我想我错过了一些非常简单明了的东西,但我不知道它是什么。 以普通用户或
我是一名优秀的程序员,十分优秀!