Попытка написать простой скрипт проверки реестра в Visual Studio 2010, работающий на XP SP3 x86.
Нет ошибок при сборке, но при отладке программа завершается со следующей ошибкой:
Точка входа в процедуру RegGetValueA
не может быть расположен в динамическом
библиотека ссылок ADVAPI32.dll
Вот весь код программы.
// #define _WIN32_WINNT 0x0501
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
long reg = RegQueryValueEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", NULL,NULL,NULL,NULL);
// if (reg!=ERROR_SUCCESS) MessageBox(0, "Error Opening Registry Key", "Error", 0);
return 0;
}
Комментарии в коде выше добавлены на основе ответа wmeyer.
При отсутствии комментария код не завершается с этой ошибкой, но выдает другую ошибку:
Отладочная информация для Test5.exe
не может быть найден или не соответствует.
Двоичный файл не был построен с отладкой
Информация. Вы хотите продолжить
отладки?
Если я продолжу, MessageBox выскакивает с «Ошибка открытия ключа реестра».
Я попытался заменить функцию RegQueryValueEx следующими тремя другими методами, по одному за раз.
Я ЗНАЮ, ЧТО ДВЕ ИЗ них ТОЛЬКО ВИСТА, но я хотела посмотреть, будет ли ошибка другой.
Это не было.
long reg = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, hKey);
// Vista+ PHKEY hKey;
long reg = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", hKey);
long reg = RegGetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "", RRF_RT_ANY, NULL, NULL,NULL);
Я уже потерял часы, пытаясь отработать несколько других ошибок, таких как «невозможно преобразовать параметр 1 из« char »в« LPCWSTR »» - что было решено путем изменения конфигурации
и «Не удается найти или открыть файл PDB», решается путем изменения конфигурации .
Итак, еще раз, вопрос должен быть ясен:
- Как мне справиться с ошибкой?
- Как помогло предложение wmeyer'а о добавлении заголовка для фильтрации методов только для Vista, когда у проги нет методов Vista для начала? И почему программа до сих пор не работает?
Мой компьютер определенно имеет файл advapi.dll в Windows / syatem32.
EDIT:
Полностью переписал вопрос, когда в ответах указывалось, насколько непонятным он был.
Первоначально я предполагал, что Visual Studio 2010 не имеет обратной совместимости с XP.
Мне принудительно сказали, что это неправильно, но я все еще не могу заставить VS работать.