zoukankan      html  css  js  c++  java
  • 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类做了检测 

  • 相关阅读:
    Python与Flask
    Python与MySQL
    range,map,sum
    Java:初始化类、变量、程序块加载解析
    HTML_记录2
    HTML_记录1
    查看当前连接的实例名
    expdp impdp
    行列转换
    oracle创建定时任务
  • 原文地址:https://www.cnblogs.com/stst/p/4908454.html
Copyright © 2011-2022 走看看