【发布时间】:2013-03-11 06:10:29
【问题描述】:
我有一个 32 位程序,我试图在 64 位计算机上运行。我正在运行 vssadmin 命令来获取还原点信息并将其保存到文本文件中。 现在,它在我的 32 位计算机上运行良好,我在我朋友的 64 位计算机上测试它,但它不工作。
如果我在 64 位系统上运行的 32 位应用程序中使用 system(),它会使用 32 位命令提示符吗?这是我能想到的唯一会阻止它工作的事情,因为我已经从命令提示符手动运行命令并且它工作正常。
如果是这样呢?有没有强制它使用正确的命令提示符?
【问题讨论】:
-
永远不要使用 system(),使用 CreateProcess()
-
@JonathanD Rightio,我正在改用 createprocess(),但在将字符串转换为 LPWSTR 时遇到问题。我找到了一些应该这样做的代码,但事实并非如此。现在我正在尝试
std::wstring widestr = std::wstring(vsscommand.begin(), vsscommand.end()); wchar_t* widecstr = widestr.c_str();,但我得到了Error 2 error C2440: 'initializing' : cannot convert from 'const wchar_t *' to 'wchar_t *' -
你不必将 std::wstring 转换为 wchar。您得到的错误是因为您将常量转换为非常量,这是不可能的,因为它是常量:D