C# 在CF中以编程方式启动.cmd文件

C# 在CF中以编程方式启动.cmd文件,c#,process,batch-file,C#,Process,Batch File,这很好: _proc = new Process(); _proc.StartInfo.FileName = "\\Folder\\File.exe"; //Globals._proc.StartInfo.Arguments = "/k"; _proc.StartInfo.UseShellExecute = false; _proc.Start(); _proc.WaitForExit(); 这并不是: _proc = new Process(); _proc.StartInfo.FileNa

这很好:

_proc = new Process();
_proc.StartInfo.FileName = "\\Folder\\File.exe";
//Globals._proc.StartInfo.Arguments = "/k";
_proc.StartInfo.UseShellExecute = false;
_proc.Start();
_proc.WaitForExit();
这并不是:

_proc = new Process();
_proc.StartInfo.FileName = "\\Folder\\File.cmd";
_proc.StartInfo.Arguments = "/k";
_proc.StartInfo.UseShellExecute = false; //tried "true" too
_proc.Start();
_proc.WaitForExit();

我得到一个Win32Exception,没有更多信息。如何在智能设备上运行.cmd文件?

尝试使用
cmd.EXE
作为“启动”程序:


我同意@D Stanley的观点,您应该使用CMD.exe,并通过参数将file.CMD作为“命令”传递给它

但本文(特别是在讨论.bat文件时)暗示,在使用CMD.EXE之前,您可能需要设置一些注册表项。这可能也适用于.CMD文件


在这两个示例中,您已将文件名从.exe更改为.cmd。这就是问题所在吗?不,这就是问题所在,我如何打开.cmd文件。啊,我同意你的看法,我以为你在传递/k参数时遇到了问题(在一个例子中,你把它注释掉了,在另一个例子中,你没有)。你的智能设备版本是否有命令处理器?据我所知(无可否认是有限的),并不是所有人都这样做。在普通windows上,cmd.exe的位置可用作%COMSPEC%环境变量-您有这样的变量吗?没有,因为我找不到任何cmd.exe,我认为它没有。然后我得到“系统找不到指定的文件”…有什么想法吗?已尝试删除/c和/k。我假定
cmd.exe
位于您的环境路径中,因此它可能无法找到cmd文件。尝试一些简单的方法,例如
/c dir
,而不是CMD文件。仍然找不到该文件。cmd.exe位于哪里?可以在设备上找到它。什么类型的设备和什么版本的CE?我的答案基于这篇MSDN文章:提供CMD.exe的路径会有帮助吗_proc.StartInfo.FileName=“%windir%\\system32\\cmd.exe”;那篇文章似乎假设设备上的Windows文件夹中有cmd.exe,但我看不到任何内容?我在网上找到的关于这种情况的唯一模糊相关的东西是“联系您的设备供应商,要求他们提供包含cmd的操作系统版本”。。。我想问一下也没什么不好。。。但我不认为你应该屏住呼吸等待它的发生:-(
_proc.StartInfo.FileName = "cmd.exe";
_proc.StartInfo.Arguments = "/c \\Folder\\File.cmd /k";