Do not assume HKEY_CURRENT_USER/Environment exists ==> config file was
migrated. Instead test for every key to migrate under HKEY_CURRENT_USER/Environment.
This commit is contained in:
parent
20b8b56d5f
commit
c93d7d1e6d
|
@ -1861,6 +1861,7 @@ static void convert_environment( HKEY hkey_current_user )
|
||||||
static const WCHAR windowsW[] = {'w','i','n','d','o','w','s',0};
|
static const WCHAR windowsW[] = {'w','i','n','d','o','w','s',0};
|
||||||
static const WCHAR systemW[] = {'s','y','s','t','e','m',0};
|
static const WCHAR systemW[] = {'s','y','s','t','e','m',0};
|
||||||
static const WCHAR windirW[] = {'w','i','n','d','i','r',0};
|
static const WCHAR windirW[] = {'w','i','n','d','i','r',0};
|
||||||
|
static const WCHAR systemrootW[] = {'S','y','s','t','e','m','r','o','o','t',0};
|
||||||
static const WCHAR winsysdirW[] = {'w','i','n','s','y','s','d','i','r',0};
|
static const WCHAR winsysdirW[] = {'w','i','n','s','y','s','d','i','r',0};
|
||||||
static const WCHAR envW[] = {'E','n','v','i','r','o','n','m','e','n','t',0};
|
static const WCHAR envW[] = {'E','n','v','i','r','o','n','m','e','n','t',0};
|
||||||
static const WCHAR tempW[] = {'T','E','M','P',0};
|
static const WCHAR tempW[] = {'T','E','M','P',0};
|
||||||
|
@ -1894,59 +1895,83 @@ static void convert_environment( HKEY hkey_current_user )
|
||||||
NtClose( hkey_old );
|
NtClose( hkey_old );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (disp != REG_CREATED_NEW_KEY) goto done;
|
|
||||||
|
|
||||||
/* convert TEMP */
|
/* Test for existence of TEMP */
|
||||||
RtlInitUnicodeString( &nameW, tempW );
|
RtlInitUnicodeString( &nameW, tempW );
|
||||||
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
if (NtQueryValueKey(hkey_env, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
{
|
{
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
/* convert TEMP */
|
||||||
RtlInitUnicodeString( &nameW, tmpW );
|
RtlInitUnicodeString( &nameW, tempW );
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
MESSAGE( "Converted temp dir to new entry HKCU\\Environment \"TEMP\" = %s\n",
|
{
|
||||||
debugstr_w( (WCHAR*)info->Data ) );
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
RtlInitUnicodeString( &nameW, tmpW );
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
MESSAGE( "Converted temp dir to new entry HKCU\\Environment \"TEMP\" = %s\n",
|
||||||
|
debugstr_w( (WCHAR*)info->Data ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert PATH */
|
/* Test for existence of PATH */
|
||||||
RtlInitUnicodeString( &nameW, pathW );
|
RtlInitUnicodeString( &nameW, pathW );
|
||||||
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
if (NtQueryValueKey(hkey_env, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
{
|
{
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
/* convert PATH */
|
||||||
MESSAGE( "Converted path dir to new entry HKCU\\Environment \"PATH\" = %s\n",
|
RtlInitUnicodeString( &nameW, pathW );
|
||||||
debugstr_w( (WCHAR*)info->Data ) );
|
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
|
{
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
MESSAGE( "Converted path dir to new entry HKCU\\Environment \"PATH\" = %s\n",
|
||||||
|
debugstr_w( (WCHAR*)info->Data ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert USERPROFILE */
|
/* Test for existence of USERPROFILE */
|
||||||
RtlInitUnicodeString( &nameW, profileW );
|
RtlInitUnicodeString( &nameW, userprofileW );
|
||||||
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
if (NtQueryValueKey(hkey_env, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
{
|
{
|
||||||
RtlInitUnicodeString( &nameW, userprofileW );
|
/* convert USERPROFILE */
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
RtlInitUnicodeString( &nameW, profileW );
|
||||||
MESSAGE( "Converted profile dir to new entry HKCU\\Environment \"USERPROFILE\" = %s\n",
|
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
debugstr_w( (WCHAR*)info->Data ) );
|
{
|
||||||
|
RtlInitUnicodeString( &nameW, userprofileW );
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
MESSAGE( "Converted profile dir to new entry HKCU\\Environment \"USERPROFILE\" = %s\n",
|
||||||
|
debugstr_w( (WCHAR*)info->Data ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert windir */
|
/* Test for existence of windir */
|
||||||
RtlInitUnicodeString( &nameW, windowsW );
|
RtlInitUnicodeString( &nameW, windirW );
|
||||||
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
if (NtQueryValueKey(hkey_env, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
{
|
{
|
||||||
RtlInitUnicodeString( &nameW, windirW );
|
/* convert windir */
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
RtlInitUnicodeString( &nameW, windowsW );
|
||||||
MESSAGE( "Converted windows dir to new entry HKCU\\Environment \"windir\" = %s\n",
|
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
debugstr_w( (WCHAR*)info->Data ) );
|
{
|
||||||
|
RtlInitUnicodeString( &nameW, windirW );
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
RtlInitUnicodeString( &nameW, systemrootW );
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
MESSAGE( "Converted windows dir to new entry HKCU\\Environment \"windir\" = %s\n",
|
||||||
|
debugstr_w( (WCHAR*)info->Data ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert winsysdir */
|
/* Test for existence of winsysdir */
|
||||||
RtlInitUnicodeString( &nameW, systemW );
|
RtlInitUnicodeString( &nameW, winsysdirW );
|
||||||
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
if (NtQueryValueKey(hkey_env, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
{
|
{
|
||||||
RtlInitUnicodeString( &nameW, winsysdirW );
|
/* convert winsysdir */
|
||||||
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
RtlInitUnicodeString( &nameW, systemW );
|
||||||
MESSAGE( "Converted system dir to new entry HKCU\\Environment \"winsysdir\" = %s\n",
|
if (!NtQueryValueKey( hkey_old, &nameW, KeyValuePartialInformation, buffer, sizeof(buffer), &dummy ))
|
||||||
debugstr_w( (WCHAR*)info->Data ) );
|
{
|
||||||
|
RtlInitUnicodeString( &nameW, winsysdirW );
|
||||||
|
NtSetValueKey( hkey_env, &nameW, 0, info->Type, info->Data, info->DataLength );
|
||||||
|
MESSAGE( "Converted system dir to new entry HKCU\\Environment \"winsysdir\" = %s\n",
|
||||||
|
debugstr_w( (WCHAR*)info->Data ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
|
||||||
NtClose( hkey_old );
|
NtClose( hkey_old );
|
||||||
NtClose( hkey_env );
|
NtClose( hkey_env );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue