修改命令行参数(Modify Command Line Arguments)

2019-10-19 21:41发布

我有一个Win32的C ++应用程序,我需要修改命令行参数的应用程序。 具体而言,我想在这样的方式来编辑命令行参数GetCommandLineW()返回我的新论点。

信不信由你,这个工作(因为我们有一个非const指针字符数组):

LPTSTR args = GetCommandLineW();
LPTSTR new_args = L"foo --bar=baz";
wmemcpy(args, new_args, lstrlenW(new_args));

// ...
LPTSTR args2 = GetGommentLineW(); // <- equals "foo --bar=baz"

但我不知道Windows内存多久多少分配为LPTSTR提供GetCommandLineW()

是否有另一种方式做到这一点? 或有没有人知道是否有分配的命令行参数的内存可预测的量?

Answer 1:

GetCommandLineW()不分配任何存储器。 它只是返回一个指针,在该过程中的由操作系统分配的缓冲区PEB创建进程时结构。 该缓冲器存在针对该过程的寿命。



Answer 2:

修改该函数返回什么干净和最安全的方式是修改功能。 安装一个弯路,这样从你的进程中的功能的调用被重新路由到您所提供的功能。



文章来源: Modify Command Line Arguments