Изменение значения реестра с C ++? (системная команда не выполнена)

Ну, мне снова и снова говорили, что системная команда плохая, но мне нужно изменить значение реестра, и мой форте является пакетным, поэтому у меня есть команда, которая это делает:

system("REG ADD "HKCU\Control Panel\Desktop" /V Wallpaper /T REG_SZ /F /D "C:\background.bmp"");
system("REG ADD "HKCU\Control Panel\Desktop" /V WallpaperStyle /T REG_SZ /F /D 0");
system("REG ADD "HKCU\Control Panel\Desktop" /V TileWallpaper /T REG_SZ /F /D 2");
system("%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

Однако использование этого делает Visual C ++ 2010 Express выделением HKCU и косой чертой между Panel и Desktop как ошибку и не позволяет мне компилировать или отлаживать свою программу. Я не хочу использовать системную команду, поэтому мне было интересно, как использовать C ++ для предварительного преобразования той же команды реестра?
Я НЕ ПОНИМАЮ ЗАПИСЬ WIN32 API РЕГИСТРАЦИИ ???

И можно ли использовать системную команду для этого?

system("%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

потому что я не знаю, может ли C ++ выполнить ту же задачу без нее, и если да, то как ???

Извините, я знаю, что это большой вопрос, но, если возможно, не могли бы вы, пожалуйста, включить код, я только начинаю, и ни один из других форумов не имеет никакого смысла, и я искал по крайней мере три часа (я тоже не глуп с компьютерами) !! !

заранее спасибо

3

Решение

Некоторая дополнительная работа необходима для написания строковых литералов, которые содержат специальные символы. Например, в вашем коде " после ADD это конец строки.

Вы должны поставить пробел перед каждым специальным символом (включая кавычки и пробелы), чтобы убедиться, что они помещаются в строку, а не обрабатываются компилятором. Это называется побег.

Результат будет выглядеть так:

system("REG ADD \"HKCU\\Control Panel\\Desktop\" /V Wallpaper /T REG_SZ /F /D \"C:\\background.bmp\"");

Конечно, использование Registry API является лучшим вариантом для вашей задачи, но вам также нужно было уметь правильно писать строковые литералы.

1

Другие решения

Пожалуйста, используйте Win32 Registry API!!!

5

По вопросам рекламы [email protected]