澄清使用c++用命令行参数调用CreateProcessAsUser
Clarification on calling CreateProcessAsUser with command line parameters using C++
我对用命令行参数调用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);
如果CreateProcessAsUser
的第二个参数为NULL
,则模块名称必须是第三个参数中的第一个以空格分隔的令牌。
如果CreateProcessAsUser
的第二个参数不是NULL
,则将其作为要执行的可执行文件。在本例中,第三个参数可以是
a) "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
作为NULL
。
相关文章:
- 当对话框被接受时,如何用参数调用槽
- 使用用户定义的参数调用future/async并调用类方法
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 不允许运算符 const 参数调用 const 成员函数
- 为变量模板的每个参数调用模板函数
- 如何在窗口中使用注入的 dll 中的参数调用函数
- 按引用调用与按指针参数调用的差异 前递增和后递增
- 为什么使用不匹配的参数调用重载函数仍然有效
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 基于枚举参数调用专用模板方法
- C++ 如何根据作为输入传递的参数调用一个构造函数或另一个构造函数?
- 如何使用类模板参数来更改参数调用和函数签名?
- lambda 函数使用其参数作为模板参数调用模板函数
- Android:使用 c++ 中的 byte[] 参数调用 java 方法
- 使用不同的模板参数调用模板类的对象
- C++编译时检查是否可以用某种类型的参数调用重载函数
- 是否可以基于类模板的参数调用类方法和全局方法
- 使用单独的参数调用"boost::process::system()"时,获取"execv
- C++大括号初始值设定项作为参数调用不同的构造函数,然后预期