- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将注册表值从 HKCU 复制到 HKLM 时出现问题。它是一个 DWORD,我正在使用此代码枚举所有 key 并在我安装的特定时间复制它们。
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
HKEY hKey;
char szProductKey[MAX_PATH], lszValue[MAX_PATH];
TCHAR achKey[MAX_KEY_LENGTH], achClass[MAX_PATH] = TEXT(""), achValue[MAX_VALUE_NAME];
DWORD cbName, cchClassName = MAX_PATH, cSubKeys=0, cbMaxSubKey, cchMaxClass, cValues, cchMaxValue, cbMaxValueData, cbSecurityDescriptor;
FILETIME ftLastWriteTime;
PHKEY phkResult = NULL;
DWORD i, retCode, cchValue = MAX_VALUE_NAME,dwType=REG_SZ,dwSKeyValueSize,dwSize=255;
hr = WcaInitialize(hInstall, "ReadTempRegKey");
ExitOnFailure(hr, "Failed to initialize");
WcaLog(LOGMSG_STANDARD, "Initialized.");
Orc_Reg_Sub_LM_CU();
sprintf_s(szProductKey, "SOFTWARE\\M\\%s",Orc_Get_Product_Name());
WcaLog(LOGMSG_STANDARD , szProductKey);
if( RegOpenKeyEx( HKEY_CURRENT_USER,
szProductKey,
0,
KEY_READ,
&hKey) == ERROR_SUCCESS
)
{
//Get the class name and the value count.
retCode = RegQueryInfoKey(
hKey, // key handle
achClass, // buffer for class name
&cchClassName, // size of class string
NULL, // reserved
&cSubKeys, // number of subkeys
&cbMaxSubKey, // longest subkey size
&cchMaxClass, // longest class string
&cValues, // number of values for this key
&cchMaxValue, // longest value name
&cbMaxValueData, // longest value data
&cbSecurityDescriptor, // security descriptor
&ftLastWriteTime); // last write time
// Enumerate the subkeys, until RegEnumKeyEx fails.
if (cSubKeys)
{
for (i=0; i<cSubKeys; i++)
{
cbName = MAX_KEY_LENGTH;
retCode = RegEnumKeyEx(hKey, i,
achKey,
&cbName,
NULL,
NULL,
NULL,
&ftLastWriteTime);
}
}
//Enumerate the key values.
if (cValues)
{
for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++)
{
cchValue = MAX_VALUE_NAME;
achValue[0] = '\0';
retCode = RegEnumValue(hKey, i,
achValue,
&cchValue,
NULL,
NULL,
NULL,
NULL);
if (retCode == ERROR_SUCCESS )
{
DWORD dwSize = sizeof(lszValue);
retCode = RegQueryValueEx(hKey, achValue, NULL, &dwType,(LPBYTE)&lszValue, &dwSize);
if (retCode == ERROR_SUCCESS)
{
Orc_Reg_Stop_LM_CU();
dwSKeyValueSize = strlen((char*) lszValue);
Orc_RegValue(HKEY_LOCAL_MACHINE,
"SOFTWARE\\M\\Orchestrator",
KEY_SET_VALUE,
achValue,
&dwType,
(unsigned char *)lszValue,
&dwSKeyValueSize);
}
}
}
}
}
复制后注册表的值是正确的,但数据显示 无效的 dword 32 位值
有谁知道会导致这种情况的原因吗?
谢谢
最佳答案
您收到 invalid dword 32-bit value
消息,因为传递给 Orc_RegValue()
的最后一个参数不正确。 REG_DWORD 数据类型的正确值为 sizeof(DWORD)
。
尝试传递 dwSize
而不是 dwSKeyValueSize
Orc_RegValue(HKEY_LOCAL_MACHINE,
"SOFTWARE\\M\\Orchestrator",
KEY_SET_VALUE,
achValue,
&dwType,
(unsigned char *)lszValue,
&dwSize);
或者你可以试试
dwSKeyValueSize = dwSize;
代替
dwSKeyValueSize = strlen((char*) lszValue);
关于c++ - 将 DWORD 从 HKCU 复制到 HKLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271169/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
这个问题在这里已经有了答案: C++ cout hex values? (10 个答案) 关闭 6 年前。 如何在 C++ 中将十进制转换为十六进制?我在 ultoa 上取得了成功,但这给了你一个字
我想在 DWORD 数组中找到不等于 0 的最重要的 DWORD。该算法应该针对最大 128 字节的数据大小进行优化。 我做了三个不同的函数,它们都返回特定 DWORD 的索引。 unsigned l
编译C++项目时出现以下错误。 Error C2664 'BOOL CryptBinaryToStringW(const BYTE *,DWORD,DWORD,LPWSTR,DWORD *)': ca
我开始学习汇编程序,这对我来说似乎不合逻辑。 为什么我不能在一个寄存器中使用多个高字节? 我了解rax的历史原因-> eax -> ax ,所以让我们关注新的 64 位寄存器。例如,我可以使用 r8和
我遇到了一个我无法理解的编译错误。我有两个使用 WLT 8.0 的 C++ 项目。我正在使用 VS2005 来编译两者。一个在 Win XP 或 7 上运行,另一个在 CE 上运行。它们都包含 WLT
所以最近我一直想从汇编中调用一些 win32 调用,并且我一直在使用 NASM 作为我的外部汇编程序。我调用 SendMessage在我的代码中以下列方式: call __imp__SendMessa
从“DWORD (*)(void*)”到“DWORD (*)(void*)”的无效转换。蛋糕==谎言1==0 我不知道这是什么意思......我在这段代码中得到了它 HANDLE CPlugin::C
我很难理解我是否以正确的方式执行此操作以及这是否是(唯一)最佳解决方案。 我正在从事的项目正在使用 Three-Dimensional Array保存和使用大量数据。 “数据”的一部分是 DWORD
这个问题在这里已经有了答案: problems using CreateThread on a member function (1 个回答) 关闭 10 年前。 我试图在类中创建线程,但出现错误。
我在这个网站上搜索了一个答案,但最重要的答案对我不起作用,我一直收到这个错误。我最近(不确定我是否成功)将我的项目从我的台式机导入到我的新笔记本电脑,没有任何错误。每当我尝试运行时,我都会在多个文件中
我想连接 2 个非字符串类型,这样我就可以将它们用作一个。这是我的代码的主要部分: #include #include #include int main() { HANDLE hwnd =
对于这个问题,汇编语言中用一下方法处理。 (1)通过寄存器名指明要处理的数据的尺寸。 例如: 下面的指令中,寄存器指明了指令进行的是字操作: mov ax,1 mov bx,ds:[0] mov
你好,我正在尝试在 intel32 上安装程序集, 我的完整问题是,这是什么意思? mov dword ptr [esp+18h], 0AH 我特别没有得到 [esp+18h] 的部分 最佳答案 中括
如果使用汇编语言 mov eax, dword ptr[ebx] 那么这意味着复制ebx指向的值(ebx包含地址值,而不是实际值,此指令将实际值复制到地址中)? 如果我们使用 mov eax, dwo
这个问题已经有答案了: Getting hex through Cin (5 个回答) 已关闭 8 年前。 我需要从 unsigned long 进行转换(十六进制)到 DWORD . 我通常会 DW
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我收到此错误且无法更正。任何帮助表示赞赏。谢谢。错误 C2440:“=”:无法从“DWORD *”转换为“unsigned int”IntelliSense:“DWORD *”类型的值不能分配给“un
我正在尝试将带符号的浮点变量转换为 DWORD...DWORD 将由另一个程序使用,因此 DWORD 变量类型很重要... 首先...可以将带符号的 DWORD 解释为未签名的 DWORD...吗?
在 C++ 中,我可以简单地将指针转换为 DWORD 吗? MyClass * thing; DWORD myPtr = (DWORD)thing; 那行得通吗? 最佳答案 毫无疑问,您可以做到。 它
我是一名优秀的程序员,十分优秀!