mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 20:47:21 +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
|
||||
SmpSetEnvironmentVariable(IN PVOID Context,
|
||||
IN PWSTR ValueName,
|
||||
IN PVOID ValueData)
|
||||
IN PWSTR ValueData)
|
||||
{
|
||||
UNICODE_STRING EnvVariable;
|
||||
UNICODE_STRING EnvValue;
|
||||
|
@ -37,7 +37,7 @@ SmpSetEnvironmentVariable(IN PVOID Context,
|
|||
RtlInitUnicodeString(&EnvVariable,
|
||||
ValueName);
|
||||
RtlInitUnicodeString(&EnvValue,
|
||||
(PWSTR)ValueData);
|
||||
ValueData);
|
||||
return RtlSetEnvironmentVariable(Context,
|
||||
&EnvVariable,
|
||||
&EnvValue);
|
||||
|
@ -58,12 +58,93 @@ SmpEnvironmentQueryRoutine(IN PWSTR ValueName,
|
|||
return STATUS_SUCCESS;
|
||||
|
||||
DPRINT("ValueData '%S'\n", (PWSTR)ValueData);
|
||||
return SmpSetEnvironmentVariable(Context,ValueName,ValueData);
|
||||
return SmpSetEnvironmentVariable(Context,ValueName,(PWSTR)ValueData);
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
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];
|
||||
WCHAR ValueBuffer[MAX_PATH];
|
||||
|
@ -106,14 +187,4 @@ SmSetEnvironmentVariables(VOID)
|
|||
return Status;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Set environment variables from registry
|
||||
*/
|
||||
NTSTATUS
|
||||
SmUpdateEnvironment(VOID)
|
||||
{
|
||||
/* TODO */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/* 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","TMP",0x00020000,"%SystemDrive%\TEMP"
|
||||
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
|
||||
|
|
|
@ -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","TMP",0x00020000,"%SystemDrive%\TEMP"
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue