3

好吧,我一次又一次地被告知系统命令不好,但我需要更改注册表值,而且我的强项是批处理,所以我有一个命令可以做到这一点:

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 以及面板和桌面之间的斜线作为错误,并且不允许我编译或调试我的程序。我不想使用系统命令,所以我想知道如何使用 C++ 来执行相同的注册表命令?我不了解 WIN32 注册表 API ???

并且可以为此使用系统命令吗

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

因为我不知道 C++ 是否可以在没有它的情况下执行相同的任务,如果它可以如何???

抱歉,我知道这是一个大问题,但如果可能的话,请您提供代码,我才刚刚开始,其他论坛都没有任何意义,我一直在寻找至少三个小时(我对计算机也不傻)! !

提前致谢

4

2 回答 2

5

请使用Win32 Registry API !!!

于 2012-10-03T03:34:32.280 回答
1

编写包含特殊字符的字符串文字需要一些额外的工作。例如,在您的代码中,"afterADD是字符串的结尾。

您需要在每个特殊字符(包括引号和退格)之前放置一个退格,以确保将它们放入字符串而不是由编译器处理。这称为转义

结果将如下所示:

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

Using the Registry API is a better option for your task, of course, but you also needed to know how to write string literals properly.

于 2012-10-03T03:39:37.440 回答