mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 17:16:04 +00:00
[SMSS]
- Remove the system environment variable PROCESSOR_ARCHITECTURE from the hivesys*.inf files. - Let SMSS add the system environment variables PROCESSOR_ARCHITECTURE and PROCESSOR_IDENTIFIER to the registry. svn path=/trunk/; revision=47330
This commit is contained in:
parent
7a2b3d46d3
commit
4bba2335c0
3 changed files with 84 additions and 15 deletions
|
@ -29,7 +29,7 @@ SmCreateEnvironment(VOID)
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
SmpSetEnvironmentVariable(IN PVOID Context,
|
SmpSetEnvironmentVariable(IN PVOID Context,
|
||||||
IN PWSTR ValueName,
|
IN PWSTR ValueName,
|
||||||
IN PVOID ValueData)
|
IN PWSTR ValueData)
|
||||||
{
|
{
|
||||||
UNICODE_STRING EnvVariable;
|
UNICODE_STRING EnvVariable;
|
||||||
UNICODE_STRING EnvValue;
|
UNICODE_STRING EnvValue;
|
||||||
|
@ -37,7 +37,7 @@ SmpSetEnvironmentVariable(IN PVOID Context,
|
||||||
RtlInitUnicodeString(&EnvVariable,
|
RtlInitUnicodeString(&EnvVariable,
|
||||||
ValueName);
|
ValueName);
|
||||||
RtlInitUnicodeString(&EnvValue,
|
RtlInitUnicodeString(&EnvValue,
|
||||||
(PWSTR)ValueData);
|
ValueData);
|
||||||
return RtlSetEnvironmentVariable(Context,
|
return RtlSetEnvironmentVariable(Context,
|
||||||
&EnvVariable,
|
&EnvVariable,
|
||||||
&EnvValue);
|
&EnvValue);
|
||||||
|
@ -58,12 +58,93 @@ SmpEnvironmentQueryRoutine(IN PWSTR ValueName,
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
DPRINT("ValueData '%S'\n", (PWSTR)ValueData);
|
DPRINT("ValueData '%S'\n", (PWSTR)ValueData);
|
||||||
return SmpSetEnvironmentVariable(Context,ValueName,ValueData);
|
return SmpSetEnvironmentVariable(Context,ValueName,(PWSTR)ValueData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
SmSetEnvironmentVariables(VOID)
|
SmSetEnvironmentVariables(VOID)
|
||||||
|
{
|
||||||
|
PWSTR ProcessorArchitecture = L"";
|
||||||
|
RTL_QUERY_REGISTRY_TABLE QueryTable[3];
|
||||||
|
UNICODE_STRING Identifier;
|
||||||
|
UNICODE_STRING VendorIdentifier;
|
||||||
|
UNICODE_STRING ProcessorIdentifier;
|
||||||
|
WCHAR Buffer[256];
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Set the 'PROCESSOR_ARCHITECTURE' system environment variable */
|
||||||
|
#ifdef _M_IX86
|
||||||
|
ProcessorArchitecture = L"x86";
|
||||||
|
#elif _M_MD64
|
||||||
|
ProcessorArchitecture = L"AMD64";
|
||||||
|
#elif _M_ARM
|
||||||
|
ProcessorArchitecture = L"ARM";
|
||||||
|
#elif _M_PPC
|
||||||
|
ProcessorArchitecture = L"PPC";
|
||||||
|
#else
|
||||||
|
#error "Unsupported Architecture!\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
RtlWriteRegistryValue(RTL_REGISTRY_CONTROL,
|
||||||
|
L"Session Manager\\Environment",
|
||||||
|
L"PROCESSOR_ARCHITECTURE",
|
||||||
|
REG_SZ,
|
||||||
|
ProcessorArchitecture,
|
||||||
|
(wcslen(ProcessorArchitecture) + 1) * sizeof(WCHAR));
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the 'PROCESSOR_IDENTIFIER' system environment variable */
|
||||||
|
RtlInitUnicodeString(&Identifier, NULL);
|
||||||
|
RtlInitUnicodeString(&VendorIdentifier, NULL);
|
||||||
|
|
||||||
|
RtlZeroMemory(&QueryTable,
|
||||||
|
sizeof(QueryTable));
|
||||||
|
|
||||||
|
QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT;
|
||||||
|
QueryTable[0].Name = L"Identifier";
|
||||||
|
QueryTable[0].EntryContext = &Identifier;
|
||||||
|
|
||||||
|
QueryTable[1].Flags = RTL_QUERY_REGISTRY_DIRECT;
|
||||||
|
QueryTable[1].Name = L"VendorIdentifier";
|
||||||
|
QueryTable[1].EntryContext = &VendorIdentifier;
|
||||||
|
|
||||||
|
Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE,
|
||||||
|
L"\\Registry\\Machine\\Hardware\\Description\\System\\CentralProcessor\\0",
|
||||||
|
QueryTable,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT("SM: szIdentifier: %wZ\n", &Identifier);
|
||||||
|
DPRINT("SM: szVendorIdentifier: %wZ\n", &VendorIdentifier);
|
||||||
|
|
||||||
|
RtlInitEmptyUnicodeString(&ProcessorIdentifier, Buffer, 256 * sizeof(WCHAR));
|
||||||
|
|
||||||
|
RtlAppendUnicodeStringToString(&ProcessorIdentifier, &Identifier);
|
||||||
|
RtlAppendUnicodeToString(&ProcessorIdentifier, L", ");
|
||||||
|
RtlAppendUnicodeStringToString(&ProcessorIdentifier, &VendorIdentifier);
|
||||||
|
|
||||||
|
RtlWriteRegistryValue(RTL_REGISTRY_CONTROL,
|
||||||
|
L"Session Manager\\Environment",
|
||||||
|
L"PROCESSOR_IDENTIFIER",
|
||||||
|
REG_SZ,
|
||||||
|
ProcessorIdentifier.Buffer,
|
||||||
|
(wcslen(ProcessorIdentifier.Buffer) + 1) * sizeof(WCHAR));
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlFreeUnicodeString(&Identifier);
|
||||||
|
RtlFreeUnicodeString(&VendorIdentifier);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* Set environment variables from registry
|
||||||
|
*/
|
||||||
|
NTSTATUS
|
||||||
|
SmUpdateEnvironment(VOID)
|
||||||
{
|
{
|
||||||
RTL_QUERY_REGISTRY_TABLE QueryTable[2];
|
RTL_QUERY_REGISTRY_TABLE QueryTable[2];
|
||||||
WCHAR ValueBuffer[MAX_PATH];
|
WCHAR ValueBuffer[MAX_PATH];
|
||||||
|
@ -106,14 +187,4 @@ SmSetEnvironmentVariables(VOID)
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* Set environment variables from registry
|
|
||||||
*/
|
|
||||||
NTSTATUS
|
|
||||||
SmUpdateEnvironment(VOID)
|
|
||||||
{
|
|
||||||
/* TODO */
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -760,7 +760,6 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","windir",0x0
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TEMP",0x00020000,"%SystemDrive%\TEMP"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TEMP",0x00020000,"%SystemDrive%\TEMP"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TMP",0x00020000,"%SystemDrive%\TEMP"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TMP",0x00020000,"%SystemDrive%\TEMP"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PATHEXT",0x00020000,".COM;.EXE;.BAT;.CMD"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PATHEXT",0x00020000,".COM;.EXE;.BAT;.CMD"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_ARCHITECTURE",0x00020000,"x86"
|
|
||||||
|
|
||||||
|
|
||||||
; Known DLLs
|
; Known DLLs
|
||||||
|
|
|
@ -907,7 +907,6 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","windir",0x0
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TEMP",0x00020000,"%SystemDrive%\TEMP"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TEMP",0x00020000,"%SystemDrive%\TEMP"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TMP",0x00020000,"%SystemDrive%\TEMP"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","TMP",0x00020000,"%SystemDrive%\TEMP"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PATHEXT",0x00020000,".COM;.EXE;.BAT;.CMD"
|
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PATHEXT",0x00020000,".COM;.EXE;.BAT;.CMD"
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_ARCHITECTURE",0x00020000,"x86"
|
|
||||||
|
|
||||||
|
|
||||||
; Known DLLs
|
; Known DLLs
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue