gpt4 book ai didi

c++ - 仅当从我的程序打开 CMD 时出现奇怪的 CMD 错误

转载 作者:可可西里 更新时间:2023-11-01 11:27:09 26 4
gpt4 key购买 nike

这肯定很奇怪。

如果我直接打开命令提示符窗口(在开始中搜索 cmd,右键单击 > 在此处打开命令窗口,bat 文件中的 cmd,等等......)输入的所有命令都运行良好。

如果我从我的 C++ 应用程序(system("cmd");QProcess::startDetached("cmd"); 等中打开命令提示符窗口。 ...) 我输入的命令会抛出错误。

以下是一些在从我的应用程序打开的 cmd 中不起作用的命令:

vssadmin delete shadows /all
vssadmin list shadows
wmic
shadowcopy

等等......我到处都是Class not registeredInitialization failure错误。与影子拷贝有关的任何事情都不起作用。但同样,奇怪的是,当 cmd 以传统方式(不是从程序)打开时,这些相同的命令工作得很好。 cmd 的两个实例都具有管理员权限。

所以我的问题是,我打开 cmd 的方式如何影响某些命令是否有效?我所看到的一切都表明应该没有区别。

最佳答案

在 WOW64 上运行的 32 位应用程序将放在 file system redirection 下.因此,如果您的应用是 32 位应用,调用 system("c:\\windows\\system32\\cmd.exe"); 将被重定向到 C:\Windows\SysWOW64\cmd.exe 和 32 位 cmd 将始终被调用。您有一些解决方案:

  • 使用 system("c:\\windows\\sysnative\\cmd.exe"); 访问真正的 system32 文件夹并获取 64 位 cmd
  • 明确关闭文件系统重定向(通常应避免)
  • 或者更好地将其编译为 64 位应用程序。

关于c++ - 仅当从我的程序打开 CMD 时出现奇怪的 CMD 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32454690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com