0

C を知っている人なら簡単な質問だと思います (私は知りません)

プロキシが有効かどうかを確認するコードがあります。

レジストリから:

ここに画像の説明を入力

からcmd:

C:\Users\Max>reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /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 に答える