возвращаемый файл regdeletekey не найден - PullRequest
1 голос
/ 21 августа 2009

Я играл с этим, и я не могу понять, почему функция RegDeleteKey приводит к ошибке файла не найден ..

Я создал этот тестовый ключ, и он существует . HKLM \ Software \ тест Я также являюсь администратором этого компьютера. ОС Vista 32-битная.

int main()
{
    HKEY hReg;
    LONG oresult;
    LONG dresult;

    oresult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\test", 0, KEY_ALL_ACCESS, &hReg);

    if(oresult == ERROR_SUCCESS)
    {
            cout << "Key opened successfully." << endl;
    }


    dresult = RegDeleteKey(hReg, L"SOFTWARE\\test");
    if(dresult == ERROR_SUCCESS)
    {
        cout << "Key deleted succssfully." << endl;
    }
    else
    {
        if(dresult == ERROR_FILE_NOT_FOUND)
        {
            cout << "Delete failed. Key not found." << endl;
            cout << "\n";
        }
    }

    RegCloseKey(hReg);

    return 0;
}

Вывод:

ключ успешно открыт удалить не удалось. Ключ не найден.

Ответы [ 2 ]

4 голосов
/ 21 августа 2009

Согласно странице MSDN , второй параметр - это подраздел ключа в hKey:

Название удаляемого ключа. Это должен быть подключом ключа, который hKey идентифицирует, но не может иметь подразделы. Этот параметр не может быть NULL.

Это означает, что ваш код на самом деле пытается удалить HLKM \ SOFTWARE \ test \ SOFTWARE \ test.

Вы, вероятно, хотите попробовать что-то вроде:

RegDeleteKey(HKEY_LOCAL_MACHINE, L"SOFTWARE\\test");

Это может пригодиться.

0 голосов
/ 09 мая 2013

Две вещи для проверки на наличие ошибки 2 / «файл не найден»:

  • Убедитесь, что это не «значение» в ключе вместо фактического ключа.

Если вы создаете папку, например HKCU> Software> CompanyName, а затем сохраняете значение, например option = "foo", в RegSetValueEx, то вам необходимо удалить его с помощью RegDeleteValue или RegDeleteValueEx.

  • Если это 64-разрядная ОС, существуют отдельные представления реестра для 32-разрядных и 64-разрядных систем. По умолчанию 32-разрядное приложение будет использовать 32-разрядное представление для всего, но если вы по какой-то причине создали запись, используя KEY_WOW64_64KEY, то вам нужно использовать это при удалении.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...