用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 REGISTRY API ???
是否可以使用系统命令
system("%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");
因为我不知道C是否可以在没有它的情况下执行相同的任务,如果它可以如何?
对不起,我知道这是一个很大的问题,但如果可能的话,请你加入代码,我刚刚开始,其他论坛都没有任何意义,我一直在寻找三个小时(我也不愚蠢的电脑)! !
提前致谢
解决方法:
编写包含特殊字符的字符串文字需要一些额外的工作.例如,在您的代码中,“ADD之后是字符串的结尾.
您需要在每个特殊字符(包括引号和退格键)之前放置一个退格键,以确保它们被放入字符串而不是由编译器处理.这称为转义.
结果将如下所示:
system("REG ADD \"HKCU\\Control Panel\\Desktop\" /V Wallpaper /T REG_SZ /F /D \"C:\\background.bmp\"");
当然,使用Registry API是您的任务的更好选择,但您还需要知道如何正确编写字符串文字.
标签:editing,c,system,command,registry 来源: https://codeday.me/bug/20190826/1726388.html