C# Start()使用问题记录
2016-04-10 15:37
204 查看
C# Start()使用问题记录
似乎已经完全按照要求,赋值了相关属性的数据,但是Start还是运行有问题。例如:提示 The directory name is invalid 等等。
需要注意:
运行的程序要给出全部的路径名 fullpathname。Process.StartInfo.FileName
如果下列参数为真,可能还需要给出工作目录名Process.StartInfo.WorkingDirectory:
Process.StartInfo.UseShellExecute = false; //false : no needProcess.StartInfo.WorkingDirectory
参数中不可以有重定向的字符,重定向需要设置StartInfo的其它属性才可以实现:
Process.StartInfo.Arguments = "... >> my.log"
如果使用 Process.StartInfo.FileName = "CMD"
Process.StartInfo.Arguments = """ + @"/C" + @"...." + """
参数部分可能需要应该作为整体的一个字符串,引号起来。这时,CMD启动的程序可以使用重定向,但不是CMD命令被重定向了。
有的程序只能识别8个有效的文件或目录名,需要ShortName转换一下。
如果Start的文件名和参数比较复杂,
最好使用,如下方法:
string tempbatfilename = Path.GetTempFileName() + ".bat"; //Creat a bat file
// get your CommandLineText & CommandArguments
using (StreamWriter swtmp = File.CreateText(tempbatfilename))
{
swtmp.WriteLine(CommandLineText + " " + CommandArguments);
}
......
try
{
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = tempbatfilename;
myProcess.Start();
}
...
finally
{
File.Delete(tempbatfilename);
}
似乎已经完全按照要求,赋值了相关属性的数据,但是Start还是运行有问题。例如:提示 The directory name is invalid 等等。
需要注意:
运行的程序要给出全部的路径名 fullpathname。Process.StartInfo.FileName
如果下列参数为真,可能还需要给出工作目录名Process.StartInfo.WorkingDirectory:
Process.StartInfo.UseShellExecute = false; //false : no needProcess.StartInfo.WorkingDirectory
参数中不可以有重定向的字符,重定向需要设置StartInfo的其它属性才可以实现:
Process.StartInfo.Arguments = "... >> my.log"
如果使用 Process.StartInfo.FileName = "CMD"
Process.StartInfo.Arguments = """ + @"/C" + @"...." + """
参数部分可能需要应该作为整体的一个字符串,引号起来。这时,CMD启动的程序可以使用重定向,但不是CMD命令被重定向了。
有的程序只能识别8个有效的文件或目录名,需要ShortName转换一下。
如果Start的文件名和参数比较复杂,
最好使用,如下方法:
string tempbatfilename = Path.GetTempFileName() + ".bat"; //Creat a bat file
// get your CommandLineText & CommandArguments
using (StreamWriter swtmp = File.CreateText(tempbatfilename))
{
swtmp.WriteLine(CommandLineText + " " + CommandArguments);
}
......
try
{
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = tempbatfilename;
myProcess.Start();
}
...
finally
{
File.Delete(tempbatfilename);
}
相关文章推荐
- c#中WebClient类的DownloadData方法出现的“500内部服务器错误”问题及解决
- 使用反射和codeDom实现C#插件开发(2)dll开发
- C#执行batwindows批处理
- C#对txt的操作
- c#实现内存映射文件共享内存
- 关于C# math的用法
- C#生成带logo的二维码
- C# 单例模式Lazy<T>实现版本
- C# 二进制字节流查找函数IndexOf
- C# Linq 集合作为查询条件获取数据
- [C#] 整型溢出与浮点数精度 - C#袖珍参考手册
- C# 运算符 ?、??、?: 各种问号的用法和说明
- C#读写注册表
- C#预处理器指令学习
- C#同一项目中一个窗口中的按钮去操控另一个窗口控件
- 关于c#除法运算的问题
- [C#]控件大小随窗体改变而改变
- C#基础之数据类型Int64
- 《C#入门经典v6》读书笔记2 Windows编程
- 基于C#反射机制的工厂模式