使用 C++ 更改注册表值? (系统命令失败)
Posted
技术标签:
【中文标题】使用 C++ 更改注册表值? (系统命令失败)【英文标题】:Changing a registry value with C++? (system command failed) 【发布时间】:2012-09-23 23:15:04 【问题描述】:好吧,我一次又一次地被告知系统命令不好,但我需要更改注册表值,而且我的强项是批处理,所以我心里有一个命令:
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++ 是否可以执行相同的任务,如果它可以如何???
抱歉,我知道这是一个大问题,但如果可能的话,请您提供代码,我才刚刚开始,其他论坛都没有任何意义,我一直在寻找至少三个小时(我对计算机也不傻)!!!
提前致谢
【问题讨论】:
【参考方案1】:请使用Win32 Registry API!!!
【讨论】:
我已经试过了,对我来说没有意义吗?我刚刚开始,有些东西还没有点击!!!!你能解释一下它是如何工作的,请举个例子! @linuxuser27:我认为感叹尾是故意的讽刺。 @user1715942:你在撒尿吗? 我有时会很兴奋。无意冒犯。那里有很多示例代码,如果您只是搜索“C++ 代码来修改 Windows 注册表项”。你甚至会得到results on *** 啊,我看到了混乱和随后的愤怒。从来没有考虑过批处理是一种编程语言——它只是一个愚蠢的 shell 脚本。在 80 年代后期,我们都认为这是理所当然的,任何想在 PC 上编码的人都会从 BASIC、Pascal、C 或汇编等实际语言开始。通常我们只是通过阅读代码而不是要求将其提供给我们来学习;)希望您喜欢您的 C++ 之旅!【参考方案2】:需要一些额外的工作来编写包含特殊字符的字符串文字。例如,在您的代码中,ADD
之后的"
是字符串的结尾。
您需要在每个特殊字符(包括引号和退格)之前放置一个退格,以确保将它们放入字符串而不是由编译器处理。这称为转义。
结果将如下所示:
system("REG ADD \"HKCU\\Control Panel\\Desktop\" /V Wallpaper /T REG_SZ /F /D \"C:\\background.bmp\"");
当然,使用 Registry API 是完成任务的更好选择,但您还需要知道如何正确编写字符串文字。
【讨论】:
是的,使用 Registry API。 MSDN 充满了例子。这是一个:msdn.microsoft.com/en-us/library/windows/desktop/…以上是关于使用 C++ 更改注册表值? (系统命令失败)的主要内容,如果未能解决你的问题,请参考以下文章