c00*_*0fd 2 c++ winapi process
我对使用命令行参数调用CreateProcessAsUser的正确方法感到有些困惑.因此,如果没有详细说明填写其余参数,有人可以确认这是应该怎么做的吗?(换句话说,我应该将exe文件路径作为第一个命令行参数,还是将其指定为lpApplicationName
足够的?)
LPCTSTR pExePath = L"c:\\program files\\sub dir\\program.exe";
LPCTSTR pCmdLine = L"v=\"one two\"";
TCHAR buff[MAX_PATH];
StringCchCopy(buff, MAX_PATH, _T("\""));
StringCbCat(buff, MAX_PATH, pExePath);
StringCbCat(buff, MAX_PATH, _T("\" "));
StringCbCat(buff, MAX_PATH, pCmdLine);
CreateProcessAsUser(hToken, pExePath, buff, NULL, NULL, FALSE, dwFlags, NULL, NULL, &si, &pi);
Run Code Online (Sandbox Code Playgroud)
如果第二个参数CreateProcessAsUser
为NULL
,则模块名称必须是第三个参数中第一个以空格分隔的标记.
如果第二个参数CreateProcessAsUser
不是NULL
,那么它将被视为要执行的可执行文件.在这种情况下,第三个参数可以是
一个) "EXENAME p1 p2"
或者它可以
b) "p1 p2"
如果您选择a),则子进程将具有以下内容
argv[0] --> EXENAME
argv[1] --> p1
argv[2] --> p2
如果您选择b),则子进程将具有
argv[0] --> p1
argv[1] --> p2
无论哪种方式,要执行的过程都是EXENAME
(第二个参数CreateProcessAsUser
).但是,被调用的进程应该知道命令行参数的进入方式.
如果你使用b),你也可以选择将第二个参数传递给CreateProcessAsUser
as NULL
.
归档时间: |
|
查看次数: |
3333 次 |
最近记录: |