@@ -13,25 +13,29 @@ static inline BOOL is_single_or_last_option(WCHAR *opt) {
13
13
}
14
14
15
15
#ifdef ENABLE_DEBUG_LOG
16
- // Function to log the Command Line to a File
17
- static void LogCommandLine (LPCWSTR cmdline ) {
16
+ // Function to log the Original and Processed Command Lines to a File
17
+ static void LogCommandLine (LPCWSTR originalCmd , LPCWSTR processedCmd ) {
18
18
HANDLE hFile = CreateFileW (L"C:\\debug.log" , FILE_APPEND_DATA , FILE_SHARE_READ | FILE_SHARE_WRITE ,
19
19
NULL , OPEN_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL );
20
20
if (hFile != INVALID_HANDLE_VALUE ) {
21
21
SetFilePointer (hFile , 0 , NULL , FILE_END );
22
- WCHAR buffer [1024 ];
23
- wsprintfW (buffer , L"[%hs %hs] Command line : %ls\r\n" , __DATE__ , __TIME__ , cmdline );
22
+ WCHAR buffer [2048 ];
23
+ wsprintfW (buffer , L"[%hs %hs] Original Command Line : %ls\r\n" , __DATE__ , __TIME__ , originalCmd );
24
24
DWORD written ;
25
25
WriteFile (hFile , buffer , lstrlenW (buffer ) * sizeof (WCHAR ), & written , NULL );
26
+
27
+ wsprintfW (buffer , L"[%hs %hs] Processed Command Line: %ls\r\n" , __DATE__ , __TIME__ , processedCmd );
28
+ WriteFile (hFile , buffer , lstrlenW (buffer ) * sizeof (WCHAR ), & written , NULL );
29
+
26
30
CloseHandle (hFile );
27
31
}
28
32
}
29
33
30
- // Define a macro for logging
31
- #define LOG_CMDLINE (cmdline ) LogCommandLine(cmdline )
34
+ // Update the macro to log both original and processed command lines
35
+ #define LOG_CMDLINE (original , processed ) LogCommandLine(original, processed )
32
36
#else
33
37
// Define a no-op macro when debugging is disabled
34
- #define LOG_CMDLINE (cmdline ) ((void)0)
38
+ #define LOG_CMDLINE (original , processed ) ((void)0)
35
39
#endif
36
40
37
41
/*
@@ -106,7 +110,10 @@ int mainCRTStartup(void) {
106
110
PROCESS_INFORMATION pi = {0 };
107
111
int i , j , argc ;
108
112
109
- argv = CommandLineToArgvW (GetCommandLineW (), & argc );
113
+ // Capture the original command line
114
+ LPCWSTR originalCmd = GetCommandLineW ();
115
+
116
+ argv = CommandLineToArgvW (originalCmd , & argc );
110
117
111
118
// Get the correct Program Files path based on the process architecture
112
119
get_program_files_path (pwsh_pathW , MAX_PATH + 1 );
@@ -229,8 +236,8 @@ int mainCRTStartup(void) {
229
236
230
237
fix_quotes (cmdlineW );
231
238
232
- // **Debugging: Log the Command Line **
233
- LOG_CMDLINE (cmdlineW );
239
+ // **Debugging: Log the Original and Processed Command Lines **
240
+ LOG_CMDLINE (originalCmd , cmdlineW );
234
241
235
242
// Execute the command through pwsh.exe
236
243
CreateProcessW (pwsh_pathW , cmdlineW , 0 , 0 , 0 , 0 , 0 , 0 , & si , & pi );
0 commit comments