在对_wsystem的调用中执行psexec时出现问题
problems executing psexec in a call to _wsystem
在本机应用程序中,我必须在本地网络上的另一台计算机上启动另一个应用程序(toolB.exe)。为此,我使用psexec和对_wsystem的调用。目前,我正在尝试在同一台计算机上启动工具B,而不是在远程计算机上。所以在我的代码中我有这个:
const std::wstring command = L""" + psexecfull + L"" " + psexecargs + L" -c -f -d -s -n 10 "" + toolpathfull + L"" " + toolargs;
int exitcode = _wsystem(nullptr);
wchar_t buffer[1024];
_wgetcwd(buffer, _countof(buffer));
exitcode = _wsystem(command.c_str());
这个消息告诉我找到了命令解释器(第一次调用带有nullptr的_wsystem返回1),当前工作目录是C:projectbintoolstoolA
,并且命令(C:projectexternalspsexectoolspsexec.exe \127.0.0.1 -c -f -d -s -n 10 C:projectbintoolstoolBtoolB.exe -arg
)失败(第二次调用带有命令的_wsystem,返回1,文本The filename, directory name, or volume label syntax is incorrect
出现在我的应用程序控制台窗口中)。也许我还应该提到这段本机代码位于一个DLL中,该DLL包含C++(本机)和C++/CLI(托管)代码,并由一个名为toolA的.NET应用程序(我认为在同一AppDomain中)动态加载和执行。
但奇怪的是,当我从完全相同的工作目录手动执行完全相同的命令行时,psexec运行良好,toolB.exe按预期启动。那么,为什么这不能通过调用wsystem以编程方式工作呢??我该怎么解决这个问题??
如果重要的话,我运行的是Windows 7 x64。
好的,所以在命令行上手动尝试的结果不是完全相同的命令行文本,我没有对psexec和toolB可执行文件使用封闭的"。将封闭的"留给psexec可执行文件是可行的,因此显然_wsystem不允许用"封闭第一个参数。这很奇怪,因为如果psexec位于有空格的路径中,则在尝试解析psexec路径时对_wsystem的调用将失败。我还不知道如何克服这个问题。
除此之外,对wsystem的调用还返回了toolB.exe的进程id,而我期望的是0,但这是另一个问题。
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 在对_wsystem的调用中执行psexec时出现问题