Использование C ++ для импорта файлов реестра - PullRequest
0 голосов
/ 20 февраля 2010

У меня проблемы с получением следующего простого кода для правильной работы:

#include <process.h>

int main( void )
{
  system("foo.reg");               //why does this NOT WORK?!
  //system("reg import foo.reg");  //why does this NOT WORK?!
  //system("regedit \"foo.reg\""); //why does this NOT WORK?!
  return 0;
}

Файл реестра находится в каталоге, где находится скомпилированный исполняемый файл. foo.reg запускается успешно, когда я запускаю его из командной строки, но при запуске вышеуказанной программы отображается только окно подтверждения regedit, и соответствующие изменения в самом реестре отсутствуют.

Я использовал Dev-C ++ для написания программы и использую Windows XP x64 версии SP2. Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 20 февраля 2010

system("regedit /s foo.reg"); следует импортировать без вывода диалогов. См. Здесь для параметров командной строки regedit.exe . Однако я буду скептически относиться к рассматриваемому файлу реестра (foo.reg); проверьте, правильно ли это. Также после запуска убедитесь, что вы проверяете правильный путь в реестре, который foo.reg сделан для внесения изменений.

Примечание: функция system() стандартной библиотеки C объявлена ​​в stdlib.h, поэтому она должна быть:

#include <stdlib.h>
int main()
{
    system("regedit /s foo.reg");
    return 0;
}

Edit:

Я думаю, что импорт уже успешно; так как вы упомянули, что это 64-битная машина XP, я думаю, что изменения будут лежать под Wow6432Node. Например. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node или HKEY_CURRENT_USER\SOFTWARE\Wow6432Node. Так что проверь под Wow6432Node тоже. См. Этот пост и MSDN для получения дополнительной информации об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...