奇怪的CMD错误,只有当CMD从我的程序打开
Strange CMD errors only when CMD is opened from my program
这确实很奇怪。
如果我直接打开命令提示符窗口(在开始中搜索cmd,右键单击>在这里打开命令窗口,cmd在bat文件中等....)输入的所有命令都运行良好。
如果我从我的c++应用程序(system("cmd");
或QProcess::startDetached("cmd");
等....)中打开命令提示符窗口,我输入的命令抛出错误。
下面是一些在我的应用程序打开的cmd中不起作用的命令:
vssadmin delete shadows /all
vssadmin list shadows
wmic
shadowcopy
等等…我得到了Class not registered
和Initialization failure
的错误。任何与影子拷贝有关的东西都不起作用。但是,同样奇怪的是,当传统地打开cmd(不是从程序)时,这些相同的命令工作得很好。cmd的两个实例都具有admin权限。
所以我的问题是,为什么我打开cmd的方式会影响一些命令是否工作?
在WOW64上运行的32位应用程序将被置于文件系统重定向下。因此,如果你的应用程序是32位的,调用system("c:\windows\system32\cmd.exe");
将被重定向到C:WindowsSysWOW64cmd.exe
, 32位的cmd将始终被调用。你有一些解决方案:
- 使用
system("c:\windows\sysnative\cmd.exe");
访问真正的system32文件夹并获得64位cmd - 显式关闭文件系统重定向(一般应避免)
- 或者最好将其编译为64位应用。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何将我的程序转换为.dll文件并使用rundll32.exe在cmd中运行它?
- 检查我的 C++ 代码!我的cmd屏幕在运行后关闭!我的错误可能是什么
- 编译的 exe 无法通过我的自定义方案 cmd 运行?
- 为什么我的 cmd 消失了?我使用 cin.ignore(),但它没有效果!C++
- 奇怪的CMD错误,只有当CMD从我的程序打开
- 为什么我的c++ cmd屏幕挂起时,我试图访问一个文件来存储数据
- 使我的cpp应用程序不打开cmd提示符,如果我点击exe
- 在我的程序所在的目录中打开CMD
- 如何在 GUI 输出窗口而不是 Visual Studio 2015 中的 cmd 控制台上显示我的C++程序输出