- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想恢复注册表项的所有元素。 Windows API RegOpenEX 和 RegEnumKeyEx 的方法。但我不确定这是正确的方法。这是我的代码示例,那么是否应该使用这两种方法来检索此信息?
HKEY RegHkey;
Long RC=0;
DWORD a=0;
DWORD TMP=255;
FILETIME filetime;
LPWSTR lpName=nullptr;
LPWSTR lpClass=nullptr;
DWORD cchClasss=0;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",0,KEY_READ,&RegHkey);
while(RC != ERROR_NO_MORE_ITEMS)
{
RC=RegEnumKeyEx(RegHkey, a, lpName, &TMP, nullptr, lpClass, &cchClass, &filetime);
if(RC==ERROR_SUCCESS)
{
std::cout<<"type= "<<cchClass<<std::endl;
//etc...
}
a++;
}
如果 RC==ERROR_SUCCESS 我想检索类型、值和 last_write_time...。这是正确的方法吗?
最佳答案
不幸的是,这段代码中几乎所有的地方都是错误的。
LPWSTR lpName=nullptr;
LPWSTR lpClass=nullptr;
每当函数参数的文档说“指向缓冲区的指针”时,您需要提供一个缓冲区,该缓冲区是您分配的。 p>
// The {} brackets zero-initialize the buffers.
wchar_t szName[255]{};
wchar_t szClass[255]{};
DWORD TMP=255;
DWORD cchClasss=0;
将 cchClass
设置为零是错误的。您必须告诉该函数,您的缓冲区实际有多大(它可以存储多少个字符,包括 '\0' )。变量TMP
没有有意义的名字,cchName
会更一致:
// No need to hardcode the array size.
DWORD cchName = ARRAYSIZE(szName);
DWORD cchClass = ARRAYSIZE(szClass);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",0,KEY_READ,&RegHkey);
缺少函数是否成功的检查。由于多种原因,打开注册表项可能会失败,例如。 G。没有足够的权限:
DWORD res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",0,KEY_READ,&RegHkey);
if(res == ERROR_SUCCESS)
{
// do something with the registry key
}
while(RC != ERROR_NO_MORE_ITEMS)
当 RegEnumKeyEx
由于完成枚举以外的其他原因而失败时,您将陷入无限循环。正确的条件是 RC == ERROR_SUCCESS
。
RC=RegEnumKeyEx(RegHkey, a, lpName, &TMP, nullptr, lpClass, &cchClass, &filetime);
注册表项 SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
的子项是值,因此您必须改用 RegEnumValueW()
。
确保在完成注册表项后调用 RegCloseKey()
。
关于c++ - 如何恢复注册表项的所有元素? (上次写入时间、类型、值、名称……)这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870372/
之前看到一些类似的问题,想弄清楚。 在this article ,据说异步调用“没有线程”。 然而,in another one ,据说 Here, however, we’re running th
我为我公司的平板电脑(SAMSUNG Galaxy Tab Active2)开发了一个简单的软件,自上周五(2018 年 11 月 23 日)以来,它无法正常工作。我检查了该应用程序的所有功能,其中有
我正在使用 hadoop map-reduce 作业进行一些文本处理。我的工作已完成 99.2%,并停留在上一个 map 工作上。 map 输出的最后几行如下所示。上次发生此问题时,我尝试打印出从 m
上次 Ubuntu 更新后有人对 Docker 有疑问吗?我有 2 个由 docker-compose 在 ubuntu18.04 中运行的项目。两个项目都运行良好,但在 *.yml 中进行 0 次更
SQL Developer 在表中显示公共(public)同义词的创建和上次 DDL 时间: CREATED 15-AUG-09 LAST_DDL_TIME 15-AUG-09 O
我正在使用带有以下插件的 mavenized 库项目: com.jayway.maven.plugins.android.generation2
我正在使用 Jssor Slider 作为轮播。在 Google Chrome 上次更新到版本 45.0.2454.85 之前,它一直运行良好。想法是它不显示图像。目前,它们位于标签中,可在 Safa
我是一名优秀的程序员,十分优秀!