diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 4810965de75..909754254e3 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -517,9 +517,10 @@ static void set_additional_environment(void) static const WCHAR all_users_valueW[] = {'A','l','l','U','s','e','r','s','P','r','o','f','i','l','e','\0'}; static const WCHAR computernameW[] = {'C','O','M','P','U','T','E','R','N','A','M','E',0}; static const WCHAR allusersW[] = {'A','L','L','U','S','E','R','S','P','R','O','F','I','L','E',0}; + static const WCHAR programdataW[] = {'P','r','o','g','r','a','m','D','a','t','a',0}; OBJECT_ATTRIBUTES attr; UNICODE_STRING nameW; - WCHAR *profile_dir = NULL, *all_users_dir = NULL; + WCHAR *profile_dir = NULL, *all_users_dir = NULL, *program_data_dir = NULL; WCHAR buf[MAX_COMPUTERNAME_LENGTH+1]; HANDLE hkey; DWORD len; @@ -542,6 +543,7 @@ static void set_additional_environment(void) { profile_dir = get_reg_value( hkey, profiles_valueW ); all_users_dir = get_reg_value( hkey, all_users_valueW ); + program_data_dir = get_reg_value( hkey, programdataW ); NtClose( hkey ); } @@ -559,8 +561,14 @@ static void set_additional_environment(void) HeapFree( GetProcessHeap(), 0, value ); } + if (program_data_dir) + { + SetEnvironmentVariableW( programdataW, program_data_dir ); + } + HeapFree( GetProcessHeap(), 0, all_users_dir ); HeapFree( GetProcessHeap(), 0, profile_dir ); + HeapFree( GetProcessHeap(), 0, program_data_dir ); } /***********************************************************************