Windows XP 与 Windows 10 中的命令行参数解析不同

Command line arguments parsing is different in Windows XP vs Windows 10

考虑命令行参数:

D:\work\test.exe -a -p

我的 C++ 应用程序的 main() 接收参数如下:

  1. Windows 10

    argc = 3  
    
    argv[0] = "D:\work\test.exe"
    
    argv[1] = "-a" 
    
    argv[2] = "-p"
    
  2. Windows XP

    argv = 3    
    
    argv[0] = "test.exe"
    
    argv[1] = "-a"   
    
    argv[2] = "-p"
    

参数 argv[0] 的解析方式不同。 我的应用程序需要它们相同。
有什么方法可以在 Windows XP 中获取完整路径吗?
main 和 winmain 我都试过了,结果是一样的。

您可以像这样确定应用程序的 .exe 文件的完整路径:

WCHAR *path = new WCHAR [32768]; // allow for long path names on Win 10
GetModuleFileNameW (NULL, path, 32768);
...
delete [] path;

Documentation