mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
[SMSS]
Fix for the loading of the "KnownDlls" in SMSS. Patch by Hermès BÉLUSCA - MAÏTO. The patch was applied without changes to comments, indentation and coding style. See issue #6159 for more details. svn path=/trunk/; revision=51511
This commit is contained in:
@@ -30,10 +30,10 @@ struct {
|
||||
{TRUE, SmInitDosDevices, "create dos device links"},
|
||||
{TRUE, SmRunBootApplications, "run boot applications"},
|
||||
{TRUE, SmProcessFileRenameList, "process the file rename list"},
|
||||
{FALSE, SmUpdateEnvironment, "update environment variables"},
|
||||
{FALSE, SmLoadKnownDlls, "preload system DLLs"},
|
||||
{TRUE, SmCreatePagingFiles, "create paging files"},
|
||||
{TRUE, SmInitializeRegistry, "initialize the registry"},
|
||||
{FALSE, SmUpdateEnvironment, "update environment variables"},
|
||||
{TRUE, SmInitializeClientManagement, "initialize client management"},
|
||||
{TRUE, SmLoadSubsystems, "load subsystems"}
|
||||
};
|
||||
|
||||
@@ -227,10 +227,6 @@ SmSetEnvironmentVariables(VOID)
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
NtClose(EnvironmentKey);
|
||||
|
||||
|
||||
/* Set the 'PROCESSOR_IDENTIFIER' system environment variable */
|
||||
RtlInitUnicodeString(&Identifier, NULL);
|
||||
RtlInitUnicodeString(&VendorIdentifier, NULL);
|
||||
@@ -251,25 +247,37 @@ done:
|
||||
QueryTable,
|
||||
NULL,
|
||||
NULL);
|
||||
if (NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("SM: szIdentifier: %wZ\n", &Identifier);
|
||||
DPRINT("SM: szVendorIdentifier: %wZ\n", &VendorIdentifier);
|
||||
|
||||
swprintf(Buffer, L"%wZ, %wZ", &Identifier, &VendorIdentifier);
|
||||
|
||||
RtlWriteRegistryValue(RTL_REGISTRY_CONTROL,
|
||||
L"Session Manager\\Environment",
|
||||
L"PROCESSOR_IDENTIFIER",
|
||||
REG_SZ,
|
||||
Buffer,
|
||||
(wcslen(Buffer) + 1) * sizeof(WCHAR));
|
||||
DPRINT1("SM: Failed to retrieve processor Identifier and/or VendorIdentifier (Status %08lx)", Status);
|
||||
goto done;
|
||||
}
|
||||
|
||||
RtlFreeUnicodeString(&Identifier);
|
||||
RtlFreeUnicodeString(&VendorIdentifier);
|
||||
DPRINT("SM: szIdentifier: %wZ\n" , &Identifier);
|
||||
DPRINT("SM: szVendorIdentifier: %wZ\n", &VendorIdentifier);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
RtlInitUnicodeString(&VariableName, L"PROCESSOR_IDENTIFIER");
|
||||
swprintf(Buffer, L"%wZ, %wZ", &Identifier, &VendorIdentifier);
|
||||
RtlFreeUnicodeString(&VendorIdentifier);
|
||||
RtlFreeUnicodeString(&Identifier);
|
||||
|
||||
Status = NtSetValueKey(EnvironmentKey,
|
||||
&VariableName,
|
||||
0,
|
||||
REG_SZ,
|
||||
Buffer,
|
||||
(wcslen(Buffer) + 1) * sizeof(WCHAR));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("SM: Failed to set the PROCESSOR_IDENTIFIER environment variable (Status %08lx)", Status);
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
/* Close the handle */
|
||||
NtClose(EnvironmentKey);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
@@ -282,6 +290,10 @@ SmUpdateEnvironment(VOID)
|
||||
RTL_QUERY_REGISTRY_TABLE QueryTable[2];
|
||||
WCHAR ValueBuffer[MAX_PATH];
|
||||
NTSTATUS Status;
|
||||
#ifndef NDEBUG
|
||||
ULONG ii;
|
||||
PWSTR envp;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following environment variables must be set prior to reading
|
||||
@@ -317,6 +329,18 @@ SmUpdateEnvironment(VOID)
|
||||
&SmSystemEnvironment,
|
||||
SmSystemEnvironment);
|
||||
|
||||
#ifndef NDEBUG
|
||||
/* Print all environment varaibles */
|
||||
ii = 0;
|
||||
envp = SmSystemEnvironment;
|
||||
DbgPrint("SmUpdateEnvironment:\n");
|
||||
while (*envp)
|
||||
{
|
||||
DbgPrint(" %u: %S\n", ii++, envp);
|
||||
envp += wcslen(envp) + 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user