C# CreateProcess的测试

很奇怪的一个现象,在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类做了检测

时间: 2025-01-05 12:39:30

C# CreateProcess的测试的相关文章

minGW安装出错gcc: error: CreateProcess: No such file or directory

我用的是在线安装的方式,调试的时候,出现以下错误: 23:23:45 **** Rebuild of configuration Debug for project helloworld_c ****Info: Internal Builder is used for buildgcc -O0 -g3 -Wall -c -fmessage-length=0 -o helloworld.o "..\\helloworld.c" gcc: error: CreateProcess: No 

WinExec, ShellExecute,CreateProcess的对比

三个SDK函数: WinExec, ShellExecute,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂.    WinExec 两个参数,前一个指定路径,后一个指定显示方式.    ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等.    Cr

关于CreateProcess函数一些经验

TCHAR szCmdLine[]={TEXT("E:\\CPL-server\\其他工具\\restartSrv\\bin\\opensavepath.exe")}; TCHAR static szCommandLine[MAX_PATH + 700] = {0}; lstrcpy(szCommandLine, pProgramPath); STARTUPINFO si = {0}; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(ST

MFC 记录 CreateProcess启动外部游戏主程序

CreateProcess 为WindowsApi函数,用来创建一个新的进程,这个新进程可以运行指定的可执行文件! 函数原型 BOOL CreateProcess ( LPCTSTR lpApplicationName,//参数1.应用程序的名称,绝对路径,也可以是相对路径,可为NULL,若为NULL,则执行lpCommandLine LPTSTR lpCommandLine,<span style="white-space:pre"> </span> //参数

反调试手法之CreateProcess反调试

反调试手法之CreateProcess反调试 在学习Win32 创建进程的时候.我们发现了有一个进程信息结构体. STARTUPINFO. 这个结构体可以实现反调试. 具体CreateProcess可以参考上一篇博客.:  https://www.cnblogs.com/iBinary/p/9571577.html 一丶实现反调试需要的东西. 假设我们要实现反调试. 那么我们需要一个API GetStartupInfo (STARTUPINFO) 使用此API可以在进程启动的时候获取启动信息结构

Createprocess控制台程序输出重定向

在Windows编程中,并非每一个应用程序都需要一个图形用户界面(GUI),很多情况下,我们可以编写一个控制台应用程序,这样程序更小,加载更快,传输时间也短,同时也丝毫不牺牲程序应有的功能.这种程序特别适合那些在后台运行的程序,比如压缩.杀毒.上传下载等等.如果我们的确需要在GUI执行这些程序,以完成某些比如类似于磁盘格式化的功能,我们可以在GUI程序中创建一个新的进程,调用这些已有的控制台应用程序,帮助完成这些功能.然而令人失望的是,我们每次加载这些控制台应用程序时,图形程序总会在加载的过程中

iOS app打包 -- 生成ipa测试包 步骤详解

最近有小伙伴问我如何打成ipa包分发给测试人员 , 虽然现在网上的教程很多,但是也很杂, 没有一个比较完整的讲解. 利用工作之余, 就说一下如何生成ipa包?共分为两种方法. 第一种方法: 1) 至于配置发布证书和AdHoc描述文件, 就不再累述, 下载下来双击安装即可.(ps: 生成AdHoc描述文件的时候要注意勾选所有的设备, 只有被描述文件包含的设备才能进行相应的测试. 如果是企业账号的话则不需要添加设备的udid). 2) 接下来开始配置xCode里的工作(包括发布证书和描述文件), 注

Monkey测试

1             概述 Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件.通常也称随机测试或者稳定性测试. 2             测试步骤 2.1   测试前提条件 1.将手机恢复出厂设置 2.恢复出厂设置后,进入设置--

软件测试中的数据库测试

数据库中数据的基本结构 定义一:数据元素集合(也可称数据对象)中各元素的关系. 定义二:相互之间存在特定关系的数据元素集合. 一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多 字段(数据项)组成数据库测试分类系统测试.集成测试.单元测试.功能测试.性能测试.安全测试系统测试.数据库在初期设计中需要进行分析测试. 对于各种数据元素进行完美融合,并理清相互之间的关系便是数据库结构的基本定义. 在数据库中,不同数据之间会存在既定的特殊关系,其属于各种数据元素