【发布时间】:2019-04-24 02:33:56
【问题描述】:
我有代码可以调用CreateProcess() 并获取StdIn 和StdOut 的句柄。
我已经将它与 CMD 一起使用,它工作正常。但是,我启动了 PowerShell
有了它,PowerShell 并没有很好地发挥作用。它基本上利用了我的程序
并接管了线程。
这当然导致我进行调试,我发现ReadFile()
函数读取 PowerShell 的输出,一切都结束了。很有趣。
所以我的问题是:PowerShell 以什么格式将输出发送到 StdOut?
我听说它在“对象”中说话,但它似乎输出原始机器代码。
DWORD WINAPI threadRead(HANDLE *cmdStd_OUT_RD) {
char *chBuff = malloc(READ_BUFFER_SM);
int check = 0;
for (;;) {
dwRead = 0; //Global Variable
check = 0;
memset(chBuff, 0, READ_BUFFER_SM);
puts("Reading..\n");
check = ReadFile(*cmdStd_OUT_RD, chBuff, READ_BUFFER_SM, &dwRead, NULL);
if (check || dwRead > 0) {
printf("Display: %s\n", chBuff);
}
}
return 0;
}
另外,还有另一个对 PowerShell 安全的 Read 函数吗?
编辑:我觉得它正在发送字节,所以可以尝试使用void。之后会更新。
编辑:不,它仍然接管。猜猜ReadFile() 无法读取它的StdOut。
【问题讨论】:
标签: c powershell stdout