其他分享
首页 > 其他分享> > 用C更改注册表值? (系统命令失败)

用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