Fix modern settings on Win11 24H2+ (#2091)

This commit is contained in:
ge0rdi
2025-01-04 09:47:32 +01:00
committed by GitHub
parent d82fadb926
commit 055ac87039

View File

@@ -274,15 +274,30 @@ static void ParseApplicationInformation(CComPtr<IXMLDOMNode>& parent, AttributeW
} }
} }
static void ParseSettingIDs(CComPtr<IXMLDOMNode>& node, AttributeWriter& writer)
{
writer.addString(Id::PageId, GetTranslatedString(node, L"PageID"));
writer.addString(Id::HostId, GetTranslatedString(node, L"HostID"));
writer.addString(Id::GroupId, GetTranslatedString(node, L"GroupID"));
writer.addString(Id::SettingId, GetTranslatedString(node, L"SettingID"));
}
static void ParseSettingPaths(CComPtr<IXMLDOMNode>& parent, AttributeWriter& writer)
{
CComPtr<IXMLDOMNode> node;
if (parent->selectSingleNode(CComBSTR(L"SettingPaths/Path"), &node) == S_OK)
ParseSettingIDs(node, writer);
}
static void ParseSettingIdentity(CComPtr<IXMLDOMNode>& parent, AttributeWriter& writer) static void ParseSettingIdentity(CComPtr<IXMLDOMNode>& parent, AttributeWriter& writer)
{ {
CComPtr<IXMLDOMNode> node; CComPtr<IXMLDOMNode> node;
if (parent->selectSingleNode(CComBSTR(L"SettingIdentity"), &node) == S_OK) if (parent->selectSingleNode(CComBSTR(L"SettingIdentity"), &node) == S_OK)
{ {
writer.addString(Id::PageId, GetTranslatedString(node, L"PageID")); // Win11 24H2+
writer.addString(Id::HostId, GetTranslatedString(node, L"HostID")); ParseSettingPaths(node, writer);
writer.addString(Id::GroupId, GetTranslatedString(node, L"GroupID")); // older
writer.addString(Id::SettingId, GetTranslatedString(node, L"SettingID")); ParseSettingIDs(node, writer);
} }
} }