【发布时间】:2013-11-26 15:23:37
【问题描述】:
我有一个类似的问题: Using Java runtime to add registry key, cause process reg.exe to run forever
但我使用的是 C++ 和 WinExec(),但我不知道如何在我的代码中使用为 Java 提供的解决方案。
我的代码是:
int result =
WinExec("CMD.EXE /C REG ADD HKEY_LOCAL_MACHINE\... /v Data1 /t Reg_SZ
/d \"cmd.exe /C ...\"", SW_HIDE);
我已尝试将其更改为:
int result =
WinExec("CMD.EXE /C REG ADD HKEY_LOCAL_MACHINE\... /v Data1 /t Reg_SZ
/d \"cmd.exe /C ...\" > 0", SW_HIDE);
但它给了我同样的结果。
那么如何“消耗”进程的输出并以正确的方式关闭所有流?我猜 CMD.EXE 在执行后也会保持活动状态(0% CPU,egists 永远)。
【问题讨论】:
-
REG ADD 要求您授予覆盖现有值的权限。你永远不会回答这个问题,所以它会永远等待。既然您已经在编写 C++,为什么不自己调用 RegSetValueEx 呢?
-
尝试手动运行整个命令字符串?可能是 reg 正坐在提示符处等待输入或其他什么。
-
确实,reg 是一个提示符。谢谢你们:)
标签: c++ windows io registry iostream