用winapi改变argv [0]

时间:2015-03-20 01:45:32

标签: winapi argv

我的目标是更改应用程序重新启动的路径。我无法访问main,但我可以通过ctypes自由运行C代码。

我能够用getexecname()更改Solarios中的argv [0],这给了我指向它的指针,我做了memcpy

我想知道在winapi中是否有一个方法允许我找到argv[0]指针,或者是一个改变它的API函数?

由于

1 个答案:

答案 0 :(得分:2)

在Windows上,您的命令行位于PEB(进程环境块)中。你可能不应该修改它,但你可以找到它并采取行动。

您可以使用GetCommandLine():https://msdn.microsoft.com/en-us/library/windows/desktop/ms683156(v=vs.85).aspx

找到它

并自己或使用CommandLineToArgvW https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391(v=vs.85).aspx解析它 - 然后启动自己的新实例(使用CreateProcess或ShellExecute,无论适用的是什么),然后终止。你的新实例将有正确的参数。