C# CreateProcess的测试
作者:网络转载 发布时间:[ 2015/10/28 13:42:19 ] 推荐标签:测试开发技术 .NET
很奇怪的一个现象,在C#中使用Process来启动进程,启动文件名必须是系统指定的扩展名.EXE,而我使用原生的Win32API ::CreateProcess ()并没有这个限制,以后遇到类似的问题要注意了
下面例子:com.aaa,com.exe都是同一个可执行文件,只是扩展名不一样
[TestMethod()]
public void Simple1111_Test()
{
var process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"e:com.aaa";
var bb = process.Start();
}
运行失败,但是下面的测试
[TestMethod()]
public void Simple1111_Test()
{
var process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"e:com.exe";
var bb = process.Start();
}
运行成功
下面用原生的WIN32API测试Com.aaa
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = TRUE;
BOOL bRet = ::CreateProcess ( TEXT("e:\Com.aaa"),
NULL, NULL, NULL, FALSE,
CREATE_NEW_CONSOLE, NULL,
NULL, &si, &pi);
int error = GetLastError();
这个又成功了
说明内核没有检测执行文件的扩展名,而.Net库Process类做了检测
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11