簡體   English   中英

如何使用C ++正確檢查注冊表項是否存在?

[英]How to properly check if a registry key exists with c++?

我的目標非常簡單,我只想檢查C ++是否存在注冊表項。 我找不到任何有用的在線信息。 下面的代碼編譯沒有錯誤,但是我得到輸出“ Not open”,並且我知道我有該注冊表項。

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
using namespace std;
int main(){
    HKEY hKey;
    if(RegOpenKey(HKEY_LOCAL_MACHINE,TEXT("Software\\Oracle\\VirtualBox"),&hKey) == ERROR_SUCCESS)    {

        cout << "Opened";
    }
    else
    {
        cout << "not opened";
    }
    return 0;
}

你的代碼是好的(雖然你應該使用RegOpenKeyEx()來代替,如RegOpenKey()已被廢棄,僅適用於16位代碼的向后兼容性提供)。 您只需要注意返回值。 如果RegOpenKey/Ex()返回ERROR_PATH_NOT_FOUNDERROR_FILE_NOT_FOUND ,則該鍵不存在。 其他任何返回值都表示該密鑰存在,並且如果返回值為ERROR_SUCCESS則需要關閉打開的密鑰,否則即使該密鑰存在,也無權打開該密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM