使用 C++ 更改注册表值?(系统命令失败)

Changing a registry value with C++? (system command failed)

本文关键字:系统命令 失败 C++ 注册表 使用      更新时间:2023-10-16

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

system("REG ADD "HKCUControl PanelDesktop" /V Wallpaper /T REG_SZ /F /D "C:background.bmp"");
system("REG ADD "HKCUControl PanelDesktop" /V WallpaperStyle /T REG_SZ /F /D 0");
system("REG ADD "HKCUControl PanelDesktop" /V TileWallpaper /T REG_SZ /F /D 2");
system("%SystemRoot%System32RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

但是,使用此功能会使Visual C++ 2010 Express突出显示HKCU以及面板和桌面之间的斜杠作为错误,并且不允许我编译或调试我的程序。我不想使用系统命令,所以我想知道如何使用C++来执行相同的注册表命令?我不了解 WIN32 注册表 API???

是否可以为此使用系统命令

system("%SystemRoot%System32RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

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

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

提前致谢

请使用 Win32 注册表 API!!

编写包含特殊字符的字符串文本需要一些额外的工作。 例如,在代码中,ADD后面的"是字符串的末尾。

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

结果将如下所示:

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

当然,使用注册表 API 是完成任务的更好选择,但您还需要知道如何正确编写字符串文本。

相关文章: