Kaydet (Commit) 145accd9 authored tarafından Tamás Zolnai's avatar Tamás Zolnai Kaydeden (comit) Stephan Bergmann

tdf#106283: Registry settings are not read properly on Windows

Read also a type value from registry so user can specify
a type for a property of an extensible group.

Change-Id: I4105ba559a64ce96bfe5a390660ad7f349ba894c
Reviewed-on: https://gerrit.libreoffice.org/34961Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst e6cca48b
......@@ -68,6 +68,18 @@ namespace {
// </node>
// </node>
// </item>
//
// Third example (property of an extensible group -> needs type):
// [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\LibreOffice\org.openoffice.Office.Jobs\Jobs\org.openoffice.Office.Jobs:Job['UpdateCheck']\Arguments\AutoCheckEnabled]
// "Value"="false"
// "Final"=dword:00000001
// "Type"="xs:boolean"
// becomes the following in configuration:
// <item oor:path="/org.openoffice.Office.Jobs/Jobs/org.openoffice.Office.Jobs:Job['UpdateCheck']/Arguments">
// <prop oor:name="AutoCheckEnabled" oor:type="xs::boolean" oor:finalized="true">
// <value>false</value>
// </prop>
// </item>
void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFileHandle)
{
......@@ -112,6 +124,7 @@ void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFil
bool bFinal = false;
OUString aValue;
OUString aType;
for(DWORD i = 0; i < nValues; ++i)
{
......@@ -121,9 +134,12 @@ void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFil
RegEnumValueW(hCurKey, i, pValueName.get(), &nValueNameLen, nullptr, nullptr, reinterpret_cast<LPBYTE>(pValue.get()), &nValueLen);
const wchar_t wsValue[] = L"Value";
const wchar_t wsFinal[] = L"Final";
const wchar_t wsType[] = L"Type";
if(!wcscmp(pValueName.get(), wsValue))
aValue = OUString(pValue.get());
if (!wcscmp(pValueName.get(), wsType))
aType = OUString(pValue.get());
if(!wcscmp(pValueName.get(), wsFinal) && *reinterpret_cast<DWORD*>(pValue.get()) == 1)
bFinal = true;
}
......@@ -173,6 +189,12 @@ void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFil
writeData(aFileHandle, "<prop oor:name=\"");
writeAttributeValue(aFileHandle, aProp);
writeData(aFileHandle, "\"");
if(!aType.isEmpty())
{
writeData(aFileHandle, " oor:type=\"");
writeAttributeValue(aFileHandle, aType);
writeData(aFileHandle, "\"");
}
if(bFinal)
writeData(aFileHandle, " oor:finalized=\"true\"");
writeData(aFileHandle, "><value>");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment