• C++ 读写注册表


    #ifndef WIN32_LEAN_AND_MEAN
    #define WIN32_LEAN_AND_MEAN
    #endif
    
    #include <windows.h>
    #include <iostream>
    using std::cout; using std::endl;
    
    HKEY OpenKey(HKEY hRootKey, wchar_t* strKey)
    {
        HKEY hKey;
        LONG nError = RegOpenKeyEx(hRootKey, strKey, NULL, KEY_ALL_ACCESS, &hKey);
    
        if (nError==ERROR_FILE_NOT_FOUND)
        {
            cout << "Creating registry key: " << strKey << endl;
            nError = RegCreateKeyEx(hRootKey, strKey, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, &hKey, NULL);
        }
    
        if (nError)
            cout << "Error: " << nError << " Could not find or create " << strKey << endl;
    
        return hKey;
    }
    
    void SetVal(HKEY hKey, LPCTSTR lpValue, DWORD data)
    {
        LONG nError = RegSetValueEx(hKey, lpValue, NULL, REG_DWORD, (LPBYTE)&data, sizeof(DWORD));
    
        if (nError)
            cout << "Error: " << nError << " Could not set registry value: " << (char*)lpValue << endl;
    }
    
    DWORD GetVal(HKEY hKey, LPCTSTR lpValue)
    {
        DWORD data;        DWORD size = sizeof(data);    DWORD type = REG_DWORD;
        LONG nError = RegQueryValueEx(hKey, lpValue, NULL, &type, (LPBYTE)&data, &size);
    
        if (nError==ERROR_FILE_NOT_FOUND)
            data = 0; // The value will be created and set to data next time SetVal() is called.
        else if (nError)
            cout << "Error: " << nError << " Could not get registry value " << (char*)lpValue << endl;
    
        return data;
    }
    
    int main()
    {
        static DWORD v1, v2;
    
        HKEY hKey = OpenKey(HKEY_LOCAL_MACHINE,L"SOFTWARE\MyCompany");
    
        v1 = GetVal(hKey, L"Value1");
        v2 = GetVal(hKey, L"Value2");
    
        v1 += 5;
        v2 += 2;
    
        SetVal(hKey, L"Value1", v1);
        SetVal(hKey, L"Value2", v2);
    
        RegCloseKey(hKey);
    
        return 0;
    }

    CopyFrom: http://www.cplusplus.com/forum/windows/58636/

  • 相关阅读:
    QPS 与 TPS 简介
    程序员需要学多门语言吗
    Docker 常用命令
    Dockerfile
    Docker-安装与部署
    Docker 容器相关技术
    java多线程 线程八锁
    java多线程 生产者消费者案例-虚假唤醒
    ConcurrentHashMap
    原子变量与CAS算法
  • 原文地址:https://www.cnblogs.com/albertofwb/p/6188770.html
Copyright © 2020-2023  润新知