0

我认为谁知道 C 是一个简单的问题,(我不是)

我有检查代理是否启用的代码。

从注册表:

在此处输入图像描述

来自cmd

C:\Users\Max>reg 查询“HKEY_CURRENT_USER\Software\Microsoft\Windows\当前版本\Internet 设置”| 查找 /i "proxyenable" ProxyEnable REG_DWORD 0x1

以下是相关的代码片段:

#define POLICY_KEY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings")

  ...

    HKEY hKey;
LONG lResult;
LONG lResultServer;
DWORD dwValue, dwType, dwSize = sizeof(dwValue);

DWORD szType = REG_SZ;
char rgValue [1024];
DWORD BufSize = sizeof(rgValue);

const char *defaultVal = "0";


lResult = RegOpenKeyEx(HKEY_CURRENT_USER, POLICY_KEY, 0, KEY_READ, &hKey);

if(lResult == ERROR_SUCCESS)
{
    lResult = RegQueryValueEx(hKey, "ProxyEnable", 0, &dwType, (LPBYTE)&dwValue, &dwSize);
    RegCloseKey(hKey);
}

// Exit if a policy value was found.
if(lResult == ERROR_SUCCESS)
{   

    if((int)lResult == 1) //  <- problematic place
    {

          ...

     ...        

我不知道为什么,但if((int)lResult == 1)返回false。

我需要做些什么来比较它lResult = 0x00000001

谢谢,

4

2 回答 2

3

这是因为lResult是函数调用的成功/失败状态,而不是注册表项的实际值。你得到的实际值在dwValue.

如果你阅读文档就很清楚了

于 2013-08-01T07:53:05.673 回答
1

你的代码

if((int)lResult == 1)

在 if 语句中:

if(lResult == ERROR_SUCCESS)
于 2013-08-01T07:54:37.057 回答