我用QSettings阅读registry。 我想读的关键是这样的:
HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS(2015年8月1日更新02:45:41更新)
由于密钥名称Source OS (Updated on 8/1/2015 02:45:41)
是dynamic的,我只是打开
QSettings settings("HKEY_LOCAL_MACHINE\\SYSTEM\\Setup", QSettings::NativeFormat);
并通过settings.childGroups()recursion运行,并用此构build我的密钥:
QString key = settings.fileName() + "\\" + settings.group();
但是这会导致:
\ HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS(更新于8 \ 1 \ 2015 02:45:41)
正如你所看到的斜线现在是反斜杠,我不能区分名称和path片。
任何想法为什么QSettings将斜杠转换成反斜杠?
从QSettings 文档 :
在章节或键名称中不要使用斜杠(
'/'
和'\'
) ; 反斜杠字符用于分隔子键(见下文)。 在窗口'\'
被QSettings
转换为'/'
,这使得它们是相同的。
一般来说,动态注册表键名称的想法不太好。 我认为更好的方法是在您的密钥中创建两个单独的值 – Source OS
和Updated On
值。