zoukankan      html  css  js  c++  java
  • VC access regedit

    #define PATH "HKEY_LOCAL_MACHINE\\Software\\..."

    HKEY hk;
    if(RegOpenKey(
       HKEY_LOCAL_MACHINE,
       PATH,
      //0,
      //KEY_ALL_ACCESS =>KEY_QUERY_VALUE,
      &hk) != ERROR_SUCCESS)
    {
        return FALSE;
    }

    DWORD dwType = 0;
    unsigned char szBuff[1024];
    DWORD dwBuffLength = sizeof(szBuff);

    if (RegQueryValueEx(hk, "InstallPath", 0, &dwType, szBuff, &dwBuffLength) != ERROR_SUCCESS)
    {
    return FALSE;
    }

    if(dwType != REG_SZ)
    {
    return FALSE;
    }

    return TRUE;

    使用记录:
    1)以前RegOpenKeyEx没有试成功,原来是要用KEY_QUERY_VALUE,而不能用KEY_ALL_ACCESS
    2)当dwBuffLength传入比获得的字符串长度小的值时,会失败。所以建议传大一些的值,调用后它会将该变量重新设为获得的字符串长度。


    -----------------------------------
    下面是从wix的wcalog.cpp中的一段:
    static BOOL IsVerboseLogging()
    {
        static int iVerbose = -1;

        if (0 > iVerbose)
        {
            iVerbose = WcaIsPropertySet("LOGVERBOSE");
            if (0 == iVerbose) // if the property wasn't set, check the registry to see if the logging policy was turned on
            {
                HKEY hkey = NULL;
                WCHAR rgwc[16] = { 0 };
                DWORD cb = sizeof(rgwc);
                if (ERROR_SUCCESS == ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Policies\\Microsoft\\Windows\\Installer", 0, KEY_QUERY_VALUE, &hkey))
                {
                    if (ERROR_SUCCESS == ::RegQueryValueExW(hkey, L"Logging", 0, NULL, reinterpret_cast<BYTE*>(rgwc), &cb))
                    {
                        for (LPCWSTR pwc = rgwc; (cb / sizeof(WCHAR)) > static_cast<DWORD>(pwc - rgwc) && *pwc; pwc++)
                        {
                            if (L'v' == *pwc || L'V' == *pwc)
                            {
                                iVerbose = 1;
                                break;
                            }
                        }
                    }

                    ::RegCloseKey(hkey);
                }
            }
        }

        Assert(iVerbose >= 0);
        return (BOOL)iVerbose;
    }


  • 相关阅读:
    Unity3d-反编译C#和提取资源
    让年轻程序员少走弯路的14个忠告
    Objective-C的陷阱与缺陷
    Android中处理Touch Icon的方案
    常用的Java代码汇总
    cocos2dx游戏资源加密之XXTEA
    9种常见的Android开发错误及解决方案
    Linux 系统常用命令汇总(三) 用户和用户组管理
    Linux 系统常用命令汇总(四) 程序和资源管理
    Linux 系统常用命令汇总(二) vi 文本编辑
  • 原文地址:https://www.cnblogs.com/huqingyu/p/193433.html
Copyright © 2011-2022 走看看