吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 363|回复: 7
收起左侧

[已解决] 求助VC实现删除注册表项

[复制链接]
朱朱你堕落了 发表于 2024-12-19 20:33
500吾爱币
本帖最后由 朱朱你堕落了 于 2024-12-19 22:29 编辑

二楼大佬威武,的确可以,看来还是微软自己写的代码靠谱!

最佳答案

查看完整内容

关键函数: RegOpenKeyEx 打开注册表, RegEnumKeyEx, 列出子项 RegDeleteKey 删除项目(单个) 这是微软官方给的删除注册表的例子:原链接 https://learn.microsoft.com/en-us/windows/win32/sysinfo/deleting-a-key-with-subkeys [mw_shl_code=cpp,true]#include #include #include //************************************************************* // // RegDelnodeRecurse() // // Purpose: Deletes a ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yuwanzhong 发表于 2024-12-19 20:33
本帖最后由 yuwanzhong 于 2024-12-19 21:12 编辑

关键函数: RegOpenKeyEx 打开注册表, RegEnumKeyEx, 列出子项  RegDeleteKey 删除项目(单个)

这是微软官方给的删除注册表的例子:原链接 https://learn.microsoft.com/en-us/windows/win32/sysinfo/deleting-a-key-with-subkeys
[C++] 纯文本查看 复制代码
#include <windows.h>
#include <stdio.h>
#include <strsafe.h>

//*************************************************************
//
//  RegDelnodeRecurse()
//
//  Purpose:    Deletes a registry key and all its subkeys / values.
//
//  Parameters: hKeyRoot    -   Root key
//              lpSubKey    -   SubKey to delete
//
//  Return:     TRUE if successful.
//              FALSE if an error occurs.
//
//*************************************************************

BOOL RegDelnodeRecurse (HKEY hKeyRoot, LPTSTR lpSubKey)
{
    LPTSTR lpEnd;
    LONG lResult;
    DWORD dwSize;
    TCHAR szName[MAX_PATH];
    HKEY hKey;
    FILETIME ftWrite;

    // First, see if we can delete the key without having
    // to recurse.

    lResult = RegDeleteKey(hKeyRoot, lpSubKey);

    if (lResult == ERROR_SUCCESS) 
        return TRUE;

    lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);

    if (lResult != ERROR_SUCCESS) 
    {
        if (lResult == ERROR_FILE_NOT_FOUND) {
            printf("Key not found.\n");
            return TRUE;
        } 
        else {
            printf("Error opening key.\n");
            return FALSE;
        }
    }

    // Check for an ending slash and add one if it is missing.

    lpEnd = lpSubKey + lstrlen(lpSubKey);

    if (*(lpEnd - 1) != TEXT('\\')) 
    {
        *lpEnd =  TEXT('\\');
        lpEnd++;
        *lpEnd =  TEXT('\0');
    }

    // Enumerate the keys

    dwSize = MAX_PATH;
    lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, NULL,
                           NULL, NULL, &ftWrite);

    if (lResult == ERROR_SUCCESS) 
    {
        do {

            *lpEnd = TEXT('\0');
            StringCchCat(lpSubKey, MAX_PATH * 2, szName);

            if (!RegDelnodeRecurse(hKeyRoot, lpSubKey)) {
                break;
            }

            dwSize = MAX_PATH;

            lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, NULL,
                                   NULL, NULL, &ftWrite);

        } while (lResult == ERROR_SUCCESS);
    }

    lpEnd--;
    *lpEnd = TEXT('\0');

    RegCloseKey (hKey);

    // Try again to delete the key.

    lResult = RegDeleteKey(hKeyRoot, lpSubKey);

    if (lResult == ERROR_SUCCESS) 
        return TRUE;

    return FALSE;
}

//*************************************************************
//
//  RegDelnode()
//
//  Purpose:    Deletes a registry key and all its subkeys / values.
//
//  Parameters: hKeyRoot    -   Root key
//              lpSubKey    -   SubKey to delete
//
//  Return:     TRUE if successful.
//              FALSE if an error occurs.
//
//*************************************************************

BOOL RegDelnode (HKEY hKeyRoot, LPCTSTR lpSubKey)
{
    TCHAR szDelKey[MAX_PATH*2];

    StringCchCopy (szDelKey, MAX_PATH*2, lpSubKey);
    return RegDelnodeRecurse(hKeyRoot, szDelKey);

}

int __cdecl main()
{
   BOOL bSuccess;

   bSuccess = RegDelnode(HKEY_CURRENT_USER, TEXT("Software\\Classes\\Interface\\{7791BBD5-704B-7DD5-7689-7B936C19F5CA}")); //编译为32位程序就不用管64位的路径,系统会自动重定向

   if(bSuccess)
      printf("Success!\n");
   else printf("Failure.\n");

   return 0;
}

免费评分

参与人数 2吾爱币 +1 热心值 +1 收起 理由
lbbas + 1 热心回复!
董督秀 + 1 我很赞同!

查看全部评分

pzx521521 发表于 2024-12-19 21:10
本帖最后由 pzx521521 于 2024-12-19 21:15 编辑

你需要一个Windsurf/cursor/chatgpt   都是1分钟搞定的东西
#include <windows.h>
#include <iostream>
#include <thread>
#include <chrono>

void DeleteRegistryKey(const std::wstring& regPath) {
    HKEY hKey = NULL;
    LSTATUS status = RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Classes", 0, KEY_WRITE, &hKey);
    if (status != ERROR_SUCCESS) {
        std::wcerr << L"Failed to open registry key: " << regPath << L" Error: " << status << std::endl;
        return;
    }

    // Delete the key
    status = RegDeleteTree(hKey, regPath.c_str());
    if (status == ERROR_SUCCESS) {
        std::wcout << L"Successfully deleted: " << regPath << std::endl;
    } else if (status == ERROR_FILE_NOT_FOUND) {
        std::wcout << L"Registry key not found: " << regPath << std::endl;
    } else {
        std::wcerr << L"Failed to delete: " << regPath << L" Error: " << status << std::endl;
    }

    // Close the registry handle
    RegCloseKey(hKey);
}

bool IsWindowsXP() {
    OSVERSIONINFO osvi = { sizeof(OSVERSIONINFO) };
    if (GetVersionEx(&osvi)) {
        return osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1; // Windows XP is version 5.1
    }
    return false;
}

void RegistryMonitorLoop() {
    std::wstring xpPath = L"Interface\\{7791BBD5-704B-7DD5-7689-7B936C19F5CA}";
    std::wstring modernPath = L"WOW6432Node\\Interface\\{7791BBD5-704B-7DD5-7689-7B936C19F5CA}";

    while (true) {
        if (IsWindowsXP()) {
            std::wcout << L"Detected Windows XP. Checking and deleting XP registry key..." << std::endl;
            DeleteRegistryKey(xpPath);
        } else {
            std::wcout << L"Detected modern Windows (7/10/11). Checking and deleting modern registry key..." << std::endl;
            DeleteRegistryKey(modernPath);
        }

        // Wait for 1 minute
        std::wcout << L"Waiting for 1 minute before next check..." << std::endl;
        std::this_thread::sleep_for(std::chrono::minutes(1));
    }
}

int main() {
    std::wcout << L"Starting registry monitor loop..." << std::endl;
    RegistryMonitorLoop();
    return 0;
}

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
董督秀 + 1 这种方法有缺陷,不是最准确的。
朱朱你堕落了 + 1 + 1 chatgpt生成的东西,我编译都不通过。。哈哈。

查看全部评分

pzx521521 发表于 2024-12-19 21:32
本帖最后由 pzx521521 于 2024-12-19 21:36 编辑

@朱朱你堕落了    没win电脑,没测试  
把错误信息复制给他  他直接就改好了
cursor和Windsurf 都是自动帮你测帮你改的
今天coplilot都被他们压力到免费了

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
朱朱你堕落了 + 2 + 1 谢谢@Thanks!

查看全部评分

冥界3大法王 发表于 2024-12-19 22:48
@pzx521521
怎么让AI改的,不会调教术。
pzx521521 发表于 2024-12-19 23:32
冥界3大法王 发表于 2024-12-19 22:48
@pzx521521
怎么让AI改的,不会调教术。

直接把报错信息粘贴给chatgpt  什么都不用动,他就啪啦啪啦给你了
一般情况下会给你解决好
二般情况下会陷入死循环 ,比如你说个23次还都是一个错误
如果不想自己看,就重开一个窗口再来一次,说不定就好了,但是这种情况很少

这时候你要看他给你代码了.然后自己debug,找问题,
然后自己发现什么问题之后,如果改的少就自己改
需要改得多 可以告诉他 问题所在哪 让他再改改,这种情况很少能成功,因为context太多了
一般都是再开一个chat,把最后代码和你发现的问题搞上去
这就要看经验了,
你如果能理解他在说什么就很好改,
你如果不理解,就很容易死循环

还有时候他就是处理不好的
比如版本问题,之前用jeager 切 opentelemetry
因为opentelemetry更新的比较快,所有引用包位置/语法什么都是过期的,
问了半天,还没有自己看文档快.这种版本切换快的,chatgpt理解都不太好,不如自己看文档
限定版本问,  也不行
这种没办法,


如果你还嫌弃复制粘贴麻烦
cursor和Windsurf, 基于vs code 二次开发的东西,没有上手难度   
他们相当于比chatgpt多了很多context,可以读取到你整个项目的文件,
不像chatgpt只是一个代码文件,所以代码质量更好一点

cursor和Windsurf 的composer 适合小项目
会自己建文件 自己调试,  还自己运行 自己改代码
甚至代码有时候看不太懂也没关系,乱七八糟的包 不一定都见过
你就负责一直点accept... 给权限


简单项目composer可以  
复杂项目不行  还得用chat,但是tab tab 也很舒服啊

我感觉以后所有的非开源vscode作为基底的ide都要淘汰 诸如visio studio, jetbrin.  

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
苏紫方璇 + 1 + 1 用心讨论,共获提升!

查看全部评分

冥界3大法王 发表于 2024-12-20 08:50
本帖最后由 冥界3大法王 于 2024-12-20 09:16 编辑

@pzx521521

在delphi中有两个memo,一个是memo1,一个是memo2,一个button1

memo1上有以下内容:
柏翠翠,RunWait
水翠翠,RunAs

按行读取memo1,并使用,来分割每行的内容。
使用,号分割后分割出的后面的内容作为查找对象,而分割出的前面的内容作为替换对象。来对memo2的内容做替换修改
你看我这么问的
https://kimi.moonshot.cn/chat/crp7eds5r38oda2hvi7g
这个AI,这描述够清晰了吧?

还有最后一个棘手问题,这东西是否得番呛专门 购买注册一个账号用用?
不然据说故意装弱智。似乎和它加载的模型数据多少有关。
昨天晚上听你说完赶紧B站上欣赏学习了下人家的视频
这描述地球人仔细读读都懂啥意思了
生成的代码一次通不过,还得改改
有这功夫使用咱自家产的delphi代码生成器也合成完了。
我感觉这东西很多时候 切割成 小节 来依次解决,最后组合反倒最省功夫。
你好,再见 发表于 2024-12-20 17:22
pzx521521 发表于 2024-12-19 23:32
直接把报错信息粘贴给chatgpt  什么都不用动,他就啪啦啪啦给你了
一般情况下会给你解决好
二般情况下会 ...

jet有copilot插件的,很好用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-2 20:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表