- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个关于 RegOpenKeyEx 的问题,代码:
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#pragma comment (lib, "Advapi32.lib")
int main () {
TCHAR *keyName = _T("SOFTWARE\\foobar2000\\capabilities");
HKEY key = NULL;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyName, 0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS) {
printf("open key failed!\n");
return -1;
} else {
printf("open key success!\n");
}
TCHAR *value = _T("123");
if (RegSetValueEx(key, _T("xxx"), 0, REG_SZ,
(const BYTE *)value, sizeof(TCHAR) * (_tcslen(value) + 1)) != ERROR_SUCCESS) {
printf("set value failed!\n");
}
RegCloseKey(key);
return 0;
}
将代码保存在reg.cpp等命令模式下:
cl reg.cpp
我得到了 reg.exe,运行它:
D:\tmp>reg.exe
开钥成功!
但该值尚未写入注册表。
另一个奇怪的是,如果我使用 visual studio 创建一个 CLI 项目,并将代码粘贴到 main() 中,RegOpenKeyEx() 将返回 false。
平台为windows 7,开启UAC。
最佳答案
听起来您正在使用虚拟化技术。如果应用程序没有 list ,当您尝试写入 HKLM\Software 时,它实际上写入了 HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software
.为防止这种情况,您可以提升运行应用程序。您可能想要添加一个 list ,强制它每次都以提升的方式运行。或者,停止写入 HKLM 并改用 HKCU。
至于 C++/CLI 部分,我猜你会得到一个 asInvoker list ,它会抑制虚拟化并导致尝试进入 HKLM 失败。
关于c++ - RegOpenKeyEx 返回 ERROR_SUCCESS 但它不应该(Windows 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079525/
我编写了一个Python程序,该程序通过管道重定向读取另一个进程的标准输出。 但是,程序在这一行很烂: print "[Input Thread] ", self.inputPipe.readline
向这个函数添加什么代码才能正常工作? (ERROR_SUCCESS) 我有代码,可以检查注册表中的值。 在函数 RegQueryValueEx 中是错误。当 oldValue 比 newValue 长
我有一个用于创建目录的函数。它使用 CreateDirectoryA() CreateDirectory 报告失败,但是当我使用 GetLastError() 检查错误代码时,它报告 ERROR_SU
以下代码向 wnd 返回 0,但紧接在 CreateDialog 之后,错误为 ERROR_SUCCESS。该对话框没有显示,我不明白这是怎么可能的。这是一个控制台项目,如果相关的话,对话框是在 vs
我正在尝试从已加载的 DLL 中枚举符号。对于那些感兴趣的人,这是 CPPCoverage project 的一部分,对于某些功能,我需要符号数据。 问题分解 当启动进程或加载DLL时,需要为一些已规
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我在 Windows 上使用 ReadFile() 从串口读取数据。这段代码在某个时间点运行良好,但现在失败了,我正试图追踪问题的根源,所以我怀疑这是串行配置或超时的问题,因为这些都没有改变。 Rea
代码如下: #include #include using namespace std; #define WIN_32_LEAN_AND_MEAN void readValueFromRegist
有一个庞大的遗留代码库,似乎在一些难以重现和调查的情况下失败。 它调用一些 WinAPI 函数,例如 CopyFile ,而不是检查返回代码,而是检查 GetLastError() 值。我知道这是错误
我正在尝试使用原生 Windows 消息队列系统(不带 .NET)使用 C/C++ 创建一个简单的窗口。我按照 MSDN 教程编写了一些创建空窗口的基本代码: void main() {
我有一个关于 RegOpenKeyEx 的问题,代码: #include #include #include #pragma comment (lib, "Advapi32.lib") int
我正在使用 CreateFile() 打开一个串口.我有一个测试用例(太复杂而无法重新分发),它始终导致 CreateFile()返回 INVALID_HANDLE_VALUE和 GetLastErr
阅读 Microsoft 关于 RegOpenKeyEx 和 RegCloseKey 的文档,我不确定如果 RegOpenKeyEx 失败是否需要调用 close 函数。 请指出我是否需要始终调用 R
我正在编写一个用于在注册表上设置键/值的函数。我有一个问题: 我调用 RegOpenKeyEx() 并返回 ERROR_SUCCESS 和 然后我调用 RegSetValueEx 来设置键/值,但它返
我正在使用 C/C++(混合)在 Linux 机器上开发专用游戏服务器。我有以下代码片段: int sockfd=socket(AI_INET, SOCK_DGRAM, 0); if(sockfd==
这是我正在编写的 dll 注入(inject)代码的一部分。 我正在使用 FindWindowA()为 INJ_PROC_NAME 中定义的窗口进程获取 HWND . 问题是函数总是返回 0,当我用
我是一名优秀的程序员,十分优秀!