Skip to content

Commit ad89fab

Browse files
committed
Fix commit 3c1cb4f
1 parent 6dfc9dd commit ad89fab

File tree

4 files changed

+59
-14
lines changed

4 files changed

+59
-14
lines changed

ProcessHacker/main.c

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,17 @@ INT WINAPI wWinMain(
277277

278278
// Create a mutant for the installer.
279279
{
280-
static UNICODE_STRING objectNameUs = RTL_CONSTANT_STRING(L"PhMutant");
280+
HANDLE mutantHandle;
281+
PPH_STRING objectName;
281282
OBJECT_ATTRIBUTES objectAttributes;
282-
HANDLE objectHandle;
283+
UNICODE_STRING objectNameUs;
284+
PH_FORMAT format[2];
285+
286+
PhInitFormatS(&format[0], L"PhMutant_");
287+
PhInitFormatU(&format[1], HandleToUlong(NtCurrentProcessId()));
288+
289+
objectName = PhFormat(format, 2, 16);
290+
PhStringRefToUnicodeString(&objectName->sr, &objectNameUs);
283291

284292
InitializeObjectAttributes(
285293
&objectAttributes,
@@ -289,7 +297,14 @@ INT WINAPI wWinMain(
289297
NULL
290298
);
291299

292-
NtCreateMutant(&objectHandle, MUTANT_ALL_ACCESS, &objectAttributes, TRUE);
300+
NtCreateMutant(
301+
&mutantHandle,
302+
MUTANT_QUERY_STATE,
303+
&objectAttributes,
304+
TRUE
305+
);
306+
307+
PhDereferenceObject(objectName);
293308
}
294309

295310
// Set the default priority.
@@ -451,13 +466,13 @@ static BOOLEAN NTAPI PhpPreviousInstancesCallback(
451466
_In_opt_ PVOID Context
452467
)
453468
{
454-
static PH_STRINGREF objectNameSr = PH_STRINGREF_INIT(L"PhMutant");
469+
static PH_STRINGREF objectNameSr = PH_STRINGREF_INIT(L"PhMutant_");
455470
HANDLE objectHandle;
456471
UNICODE_STRING objectNameUs;
457472
OBJECT_ATTRIBUTES objectAttributes;
458473
MUTANT_OWNER_INFORMATION objectInfo;
459474

460-
if (!PhEqualStringRef(Name, &objectNameSr, FALSE))
475+
if (!PhStartsWithStringRef(Name, &objectNameSr, FALSE))
461476
return TRUE;
462477
if (!PhStringRefToUnicodeString(Name, &objectNameUs))
463478
return TRUE;

tools/CustomSetupTool/CustomSetupTool/appsup.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,9 @@ static BOOLEAN NTAPI PhpPreviousInstancesCallback(
437437
OBJECT_ATTRIBUTES objectAttributes;
438438
MUTANT_OWNER_INFORMATION objectInfo;
439439

440-
if (!PhEqualStringRef2(Name, L"PhMutant", TRUE) &&
441-
!PhEqualStringRef2(Name, L"PhSetupMutant", TRUE) &&
442-
!PhEqualStringRef2(Name, L"PeViewerMutant", TRUE))
440+
if (!PhStartsWithStringRef2(Name, L"PhMutant_", TRUE) &&
441+
!PhStartsWithStringRef2(Name, L"PhSetupMutant_", TRUE) &&
442+
!PhStartsWithStringRef2(Name, L"PeViewerMutant_", TRUE))
443443
{
444444
return TRUE;
445445
}

tools/CustomSetupTool/CustomSetupTool/main.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,17 @@ VOID SetupInitializeMutant(
217217
VOID
218218
)
219219
{
220-
static UNICODE_STRING objectNameUs = RTL_CONSTANT_STRING(L"PhSetupMutant");
220+
HANDLE mutantHandle;
221+
PPH_STRING objectName;
221222
OBJECT_ATTRIBUTES objectAttributes;
222-
HANDLE objectHandle;
223+
UNICODE_STRING objectNameUs;
224+
PH_FORMAT format[2];
225+
226+
PhInitFormatS(&format[0], L"PhSetupMutant_");
227+
PhInitFormatU(&format[1], HandleToUlong(NtCurrentProcessId()));
228+
229+
objectName = PhFormat(format, 2, 16);
230+
PhStringRefToUnicodeString(&objectName->sr, &objectNameUs);
223231

224232
InitializeObjectAttributes(
225233
&objectAttributes,
@@ -229,7 +237,14 @@ VOID SetupInitializeMutant(
229237
NULL
230238
);
231239

232-
NtCreateMutant(&objectHandle, MUTANT_ALL_ACCESS, &objectAttributes, TRUE);
240+
NtCreateMutant(
241+
&mutantHandle,
242+
MUTANT_QUERY_STATE,
243+
&objectAttributes,
244+
TRUE
245+
);
246+
247+
PhDereferenceObject(objectName);
233248
}
234249

235250
INT WINAPI wWinMain(

tools/peview/main.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,17 @@ INT WINAPI wWinMain(
5757

5858
// Create a mutant for the installer.
5959
{
60-
static UNICODE_STRING objectNameUs = RTL_CONSTANT_STRING(L"PeViewerMutant");
60+
HANDLE mutantHandle;
61+
PPH_STRING objectName;
6162
OBJECT_ATTRIBUTES objectAttributes;
62-
HANDLE objectHandle;
63+
UNICODE_STRING objectNameUs;
64+
PH_FORMAT format[2];
65+
66+
PhInitFormatS(&format[0], L"PeViewerMutant_");
67+
PhInitFormatU(&format[1], HandleToUlong(NtCurrentProcessId()));
68+
69+
objectName = PhFormat(format, 2, 16);
70+
PhStringRefToUnicodeString(&objectName->sr, &objectNameUs);
6371

6472
InitializeObjectAttributes(
6573
&objectAttributes,
@@ -69,7 +77,14 @@ INT WINAPI wWinMain(
6977
NULL
7078
);
7179

72-
NtCreateMutant(&objectHandle, MUTANT_ALL_ACCESS, &objectAttributes, TRUE);
80+
NtCreateMutant(
81+
&mutantHandle,
82+
MUTANT_QUERY_STATE,
83+
&objectAttributes,
84+
TRUE
85+
);
86+
87+
PhDereferenceObject(objectName);
7388
}
7489

7590
PhGuiSupportInitialization();

0 commit comments

Comments
 (0)