gpt4 book ai didi

c++ - 操作 Windows 注册表

转载 作者:行者123 更新时间:2023-11-30 20:38:36 26 4
gpt4 key购买 nike

我希望每次程序运行时都进行此过程:

1-检查是否有名为“foo”的Windows注册表项

2- 如果不存在,则使用值 10 创建

3-如果存在则减少其值

4-如果其值== 0关闭程序

我知道我会使用这个功能,但我不知道如何使用它们:

RegCreateKeyA, RegSetValueExA

创建 key 的功能有效,但我无法设置值并且不知道如何执行我需要的操作。

HKEY key;

RegCreateKeyA(HKEY_CURRENT_USER,"foo",&key);
RegOpenKeyExA(HKEY_CURRENT_USER,"foo", 0, KEY_ALL_ACCESS, &key);
RegSetValueExA(key,"bar",0,REG_DWORD,(LPBYTE)10,sizeof(10));

最佳答案

尝试这样的事情:

HKEY key;
DWORD disposition;

LONG lRet = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("foo"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, &key, &disposition);
if (lRet != 0)
{
// error handling...
}
else
{
DWORD value;

if (disposition == REG_CREATED_NEW_KEY)
{
value = 10;

lRet = RegSetValueEx(key, TEXT("bar"), 0, REG_DWORD, (LPBYTE)&value, sizeof(value));
if (lRet != 0)
{
// error handling...
}
}
else
{
DWORD size = sizeof(value);

lRet = RegQueryValueEx(key, TEXT("bar"), NULL, NULL, (LPBYTE)&value, &size);
if (lRet != 0)
{
// error handling...
}
else
{
if (value != 0)
{
--value;

lRet = RegSetValueEx(key, TEXT("bar"), 0, REG_DWORD, (LPBYTE)&value, sizeof(value));
if (lRet != 0)
{
// error handling...
}
}

if (value == 0)
{
// signal app to terminate...
}
}
}

RegCloseKey(key);
}

关于c++ - 操作 Windows 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com