From 768b596a76f3c5476bded4526b56d05870d193dc Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sat, 25 Apr 2020 11:36:30 -0700 Subject: [PATCH] launcher: add %P variable (user profile directory) --- src/launcher/launcher.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/launcher/launcher.c b/src/launcher/launcher.c index 3aa4631f..c3f9a28d 100644 --- a/src/launcher/launcher.c +++ b/src/launcher/launcher.c @@ -910,7 +910,7 @@ NTSTATUS SvcInstanceCreate(HANDLE ClientToken, DWORD ClientTokenInformation = -1; SECURITY_ATTRIBUTES StderrSecurityAttributes = { sizeof(SECURITY_ATTRIBUTES), 0, TRUE }; FSP_LAUNCH_REG_RECORD *Record = 0; - WCHAR CurrentTime[32], CommandLine[512], Security[512]; + WCHAR CurrentTime[32], UserProfileDir[MAX_PATH], CommandLine[512], Security[512]; DWORD Length, ClassNameSize, InstanceNameSize; PSECURITY_DESCRIPTOR SecurityDescriptor = 0, NewSecurityDescriptor; PROCESS_INFORMATION ProcessInfo; @@ -948,6 +948,12 @@ NTSTATUS SvcInstanceCreate(HANDLE ClientToken, goto exit; Varv[L'U' - L'A'] = ClientUserName; + Length = MAX_PATH; + if (!GetUserProfileDirectoryW(ClientToken, UserProfileDir, &Length)) + /* store an invalid filename; any attempt to use it will fail */ + lstrcpyW(UserProfileDir, L":INVALID:"); + Varv[L'P' - L'A'] = UserProfileDir; + Result = FspLaunchRegGetRecord(ClassName, 0, &Record); if (!NT_SUCCESS(Result)) goto exit;