CreateProcess 无法调用 Visual Studio生成的exe

问题是这样的。需要用CreateProcess 函数来调用visual studio生成的3.exe。现在CreateProcess的返回值始终是Fail。而调用系统自带的notepad.exe是可以的。3.exe的功能非常简单,就是打印一条语句。(初步怀疑VS生成的exe与系统的有差别,3.exes双击是可以运行的,命令行中也可以调用)

相关代码如下:生成3.exe的代码

#include "pch.h"
#include <iostream>

int main()
{
    std::cout << "Hello World!\n"; 

}

CreateProcess使用方法

#include<iostream>
#include<stdlib.h>
#include<windows.h>

#include <iostream>
#include <tchar.h>

using namespace std;
int main()
{//一些必备参数设置
    STARTUPINFO si;
    memset(&si, 0, sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数)
    si.cb = sizeof(STARTUPINFO);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOW;
    PROCESS_INFORMATION pi;//必备参数设置结束

    //TCHAR sCmd[] = _T("c:\\windows\\system32\\notepad.exe");  此条notepad跑通
    //TCHAR sCmd[] = _T("C:\Users\qwe\Desktop\2\x64\Release\2.exe");
    TCHAR sCmd[] = _T("D:\3\x64\Release\3.exe");



    //if (!CreateProcess(TEXT("c:\\windows\\system32\\notepad.exe"),
    if (!CreateProcess(NULL, sCmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {
        cout << "CreateFail!" << endl;
        exit(1);
    }
    else {
        cout << "Success!" << endl;
    }
    //不使用的句柄最好关掉
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
    return 0;
}

3.exe路径正确,相关环境为 win10 ; vs 2017

0

1个回答

试试看 ShellExecute 以及 Winexec,都比 CreateProcess 简单。

0
caozhy
weixin_45841714 回复: 不需要改什么,我是说你打开另一个程序,用ShellExecute,只要1行,不需要CreateProcess
9 个月之前 回复
u012306934
zx_bit1 谢谢,这段代码是从一个大项目中抽出来的(vot-toolkit),不太好改内部的细节,现在只是研究为什么跑不通vs生成的exe
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于visual studio 2013生成exe文件找不到问题
**关于visual studio 2013生成exe文件找不到问题** 自己在网上找了无数篇帖子,始终没有找到关于vs生成文件.exe跑到哪里去了,整个人简直要崩溃了,功夫不负有心人,终于被我找到解决的办法了!!!! 多的不说,直接上图: 1.网上很多人说:改这里就可以了,但是对我然并卵。。。 本人做游戏开发, 输出目录和中间目录改完后并没有用。其实文件是生成了的一般在
使用Visual studio 各种版本 生成exe或者dll无法在其他机器运行的解决方式
如果是MFC类型exe文件或者dll文件,直接在 配置属性->常规->MFC的使用 中选择在静态库中使用MFC即可 如果是非MFC类型的exe文件或者dll,则需要 调整 配置属性->C/C++->代码生成 ->运行库 中选择 多线程调试(/MT) 类型 当然 这样的结果会使exe文件和dll文件体积大增,但有效增加了适配性 如果这样依然不能在非开发环境的机器上运行,则需要下载d
针对在Visual Studio 中生成的exe不能在没安装Visual Studio 机器上运行的问题、、
针对在Visual Studio 中生成的exe不能在没安装Visual Studio 机器上运行的问题、、 解决方法在vs下选择项目-属性-配置属性-c/c++-代码生成-运行时库----修改编译选项,将/MD或/MDd 改为 /MT或/MTd。 下面就分析为什么这么做、、、 (不好意思今天截图传不上,就先不上图了) 一般提示为无法连接到msvc**.dll,(说明缺少默
visual studio生成realse和debug .exe可执行文件的方法
visual studio 2012: 找到设置下的"平台"(或者相似的一个选项),把值从Debug.win32改成Release.Win32,然后点选“工程”->“生成”(或相似选项),或者直接点“运行”即可。 生成的exe文件可以在工程文件夹下的'bin/Release.Win32'或者'obj/Release.Win32'文件夹里面找到。 visual studio 2013
visual studio 生成的程序在其他机器上运行
1.右键单击,找到项目的“属性” 2. 找到 c/c++ -》 代码生成 -》运行库 3. 更改为 多线程调试(/Mtd)
调试经验 | Visual Studio中代码正常运行,但运行生成的exe报错“0xc000007b无法正常启动”
在VS环境下debug,release都可以正常运行,F5+debug/release也可以正常运行代码。但是在生成的release目录下直接运行exe出现错误如下所示。 由于需要输入参数,写了bat文件运行,和上面的错误一样。该错误不是缺乏输入参数引起的。 搜索了一下0xc000007b无法正常启动的错误,很可能是DirectX的问题。如下 将exe文件拖到depend
Visual Studio debug调试时提示找不到exe
出现这种情况的原因通常是因为生成exe文件的目录和执行目录不一致导致的,排查方法如下: 1、output directory 菜单project—properties—configuration properties—general—output directory,这个就是debug生成exe的目录; 2、command和working directory configurat...
CreateProcess 调用EXE 不成功 (如果该EXE直接双击能够运行) 使用以下方法
procedure TForm1.Button_StartApacheClick(Sender: TObject); var    ApacheStartupInfo:TStartupInfo;    ApacheProcessInfo:TProcessInformation;   a, b :string; begin   a := edit_ApachePath.Text +
visual studio 2015写好的程序,在文件夹用.exe打开
写完代码,生成解决方案。每次启动都需要很长时间,那么如何利用编译好的.exe可执行文件来打开项目呢 加粗的就是你需要找的.exe文件 打开文件夹后双击运行 ...
[C#]如何使用VisualStudio生成可以安装的exe文件
1.打开要打包的“.lsn”文件: 2.菜单栏“文件”--->“添加”--->“新建项目“: 3. 点击“项目类型”--->“其他项目类型”--->“安装和部署”,再在“模板”点击“安装项目”,点击“确定”: 4.在“文件系统”中点击“应用程序文件夹”,在空白处右击鼠标,“添加”--->点击“项目输出”,确定: 5.再右击鼠标,“添加”--->点击“文件”,
visual studio 编译能独立运行的EXE程序
问题:用Visual studio 2008 或者2010环境编译的C++程序,使用默认环境配置编译生成的exe程序, 需要操作系统中有“msvcr90.dll”运行库,才能运行。 解决方案:编译代码之前,进行如下设置。 project properties --&amp;gt;configuration properties--&amp;gt;c/c++--&amp;gt;code generation--&amp;gt...
如何将用Microsoft Visual Studio 编写的生成.exe的工程修改成生成.dll
VC++:在【项目设置】-&amp;gt;【常规】-&amp;gt;【配置类型】 中把 “应用程序 ( .exe )” 改成 “动态链接库 (.dll)”。
CreateProcess()函数用法一个应用程序中调用另一个应用程序的.exe
1、点击按钮后此应用程序调用另一个应用程序的.exe程序 void CMFCDYDlg::OnBnClickedButton1() { // TODO:  在此添加控件通知处理程序代码 //调用.exe的方法一 //WinExec("G:\\程序练习\\MFC本程序调用另一个程序的实例\\MFCTest\\Debug\\MFCTest.exe", SW_SHOW); //调用.
利用CreateProcess调用.exe文件
WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpT
Visual studio 生成脱离编译环境的程序
1.选择release 2.静态编译 项目->配置属性->常规->MFC的使用:在静态库中使用MFC 项目->配置属性->c/c++->代码生成->运行库:选择/MT
Visual Studio 设置指定调试exe的启动路径
Visual Studio 设置指定调试exe的启动路径
Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
最近有对一个Windows应用程序少许维护和修改。修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下。 Visual Studio版本:Visual Studio 2017 Visual Studio 2017 打包插件 新建项目-&amp;gt;其他项目类型-&amp;gt;Visual Studio Installer-&amp;gt;Setup Project...
CreateProcess时不显示或者不创建窗口 (或用虚拟桌面实现后台调用外部程序)
最近接触一个项目,vc中主窗口调用某个存在的EXE可执行文件在DOS(或者后台)执行,但是不想让用户看到这个执行文件,也就是不显示或者不创建窗口。从网上搜了很多总结了三种方法,希望对大家有用: 网上常见的两种方法(详细说明参考:http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010780309154/): 方法一:将 Cr
C/C++使用WinAPI CreateProcess函数调用外部程序
CreateProcess函数原型:函数原型: BOOL WINAPI CreateProcess( In_opt LPCTSTR lpApplicationName, Inout_opt LPTSTR lpCommandLine, In_opt LPSECURITY_ATTRIBUTES lpProcessAttributes, In_opt L
VisualStudio 编译出来的程序不兼容Win7
在win7和vista下,有一个系统兼容性助手功能,利用VS2008开发的程序在运行时,总是弹出应用程序兼容性助手提示框,非常烦人,事实上我们的程序兼容性是没有问题的,只不过是在程序中没有指定应用程序兼容的操作系统,所以导致了这一问题。            .menifest文件是一个随工程编译产生的xml文件,作用是为操作系统提供了对应用程序部分信息的描述,每个exe程序或者dll都必须
VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
1.创建dll项目 打开VisualStudio2019 创建DLL 点击下一步 命名为DemoDll即可 点击创建即可 然后定义宏: 在头文件中定义即可,宏的作用的是允许该函数能够被外部访问,并直接调用。 如下: 代码: // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 // 这还将影响 IntelliSense...
【IDE-Visual Studio】无法启动程序“xxx.exe”。由于应用程序配置不正确,未能启动此应用程序。
问题 解决方案 如下图设置工程属性: 配置属性->链接器->清单文件->生成清单=否
解决VS2012/VS2013/VS2015下编译的程序无法在XP下运行的问题
微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在Vista/Win7/Win8上运行。但幸好还保留了生成XP程序的设置项。XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们。   1. 项目菜单->项目属性->配置属性->常规->平台工具集,选择“VS2013WindowsXP(v120_xp)”;   2. 项目菜单->项目属性->配置属性
关于CreateProcess的问题
<br />这两天一直在搞cmd回显的问题,虽然已经搞定,但还是存在一些问题,这就是CreateProcess的问题<br />首先问题描述:<br />CreateProcess这个函数非常熟悉,再熟悉不过了 创建进程 具体说明如下:<br />BOOL CreateProcess( <br />  LPCWSTR pszImageName, <br />  LPCWSTR pszCmdLine, <br />  LPSECURITY_ATTRIBUTES psaProcess, <br />  LPSE
visual 的C#工程如何发布成exe文件
解决方案资源管理器 右键 生成解决方案 改一次,然后想用就得重新装。靠
visual studio C/C++ 编程学习(二) 同时生成dll和lib文件
之前手里有几个VS2008 C++的工程,因为懒,所以每次都是把前面一个复制到后面一个,再重写代码,这样的好处就是不用再设置一些库和依赖项(尤其是OpenCV的dll和lib要填写一大堆,很是麻烦)。今天又故技重施,拷贝了一个工程,但是小手一抖,不知道修改了哪儿的项目属性配置,导致以前该项目可以顺利地同时输出dll文件与lib文件,如今只能输出dll文件了,尼玛,我的lib文件呢??!!
visual studio给编译的exe程序添加程序图标的方法
在项目中添加资源文件(*.rc),在资源视图中,右键资源文件,选择“添加资源”,在弹出的菜单选择添加类型-图标(icon),点击“导入”按钮,在弹出的选择对话框选择自己想要添加的程序图标文件(*.ico),保存资源文件后重新编译,即可看到编译出来的exe的图标即为刚刚选择的图标。
visual studio编写的exe程序不能在没装vs的电脑上运行
visual studio编写的exe程序不能在没装vs的电脑上运行 最近在整理以前学习C++时候的笔记和项目的时候,发现以前用VS编译出来的exe程序不能在没有装VS的电脑上运行,后来仔细研究了一下,找到了原因~ 下面这个帖子是一个比较全面的解决方案 http://blog.163.com/wjm1262@126/blog/static/57814083200911673418420/本人编
使用Visual studio 查看exe文件的依赖dll项
使用Visual studio 查看exe文件的依赖dll项 事先准备:只要Visual Studio 任何版本即可。 打开Visual Studio Tools -&amp;amp;gt; 选择 命令提示 进入命令行窗口,dumpbin /dependnts exe路径 即可查询该exe的依赖项dll。 ...
vs生成解决方案后,无法生成exe文件???求助
如图所示 到底是个什么情况???? 小白跪求解决方案
visual studio程序打包发布的方法
在visual studio中我们可以编辑c++,c,c# 此类语言的程序,在调试无bug后试图将程序发布给别人使用,可是不得不将整个工程发送给被人,其中的文件繁多就算压缩后也得要解压,达不到安装程序创建快捷方式的一般安装程序的目的:此文通过以下步骤发布程序:重点内容1:新建工程 此处有两种实现方式:可以在打开的要发布的软件项目,右侧解决方案右键单击选择添加,添加工程然后再创建如图所示工程;也可以
vs2010调试时,无法找到“XXX.exe”的调试信息,或者调试信息不匹配,未生成二进制文件
报错背景:  用cmake编译的开源项目,然后用vs10打开,release模式下报错,无法找到“XXX.exe”的调试信息,或者调试信息不匹配,未生成二进制文件 。 解决方法: 在网上查到的解决方案 之一: 1. 关闭掉Visual Studio 实例。 2. 找到解决方案下的.suo文件并删除之。 3. 重新启动Visual Studio,或者直接双击.sln文件打开
visual studio 在编译时 出错显示 无法打开文件 debug// exe
在调试一个程序,出错,改正后重新编译visual studio 却 在编译时 出错,显示 无法打开文件  debug// exe 重启vs也不管用去文件夹里删除也删不了那么肯定时他在运行或有程序在使用这个文件进程管理中也没有这个exe文件,那么只能是文件被使用 打开微软sysinternals中的procexp搜索才发现了真相找到这样一条信息process:Ra
如何使用Visual Studio将编译的程序打包为安装包
安装打包插件:Microsoft Visual Studio 2017 Installer Projects工具 --&amp;gt; 扩展和更新 --&amp;gt; 联机,搜索Microsoft Visual Studio 2017 Installer Projects微软下载地址:https://marketplace.visualstudio.com/items?itemName=VisualStudio...
将visual studio 2008生成的可执行工程打包成安装软件
1:新建安装部署项目 打开VS编辑器,点击新建项目,选择:其他项目类型--安装与部署--安装向导(安装项目也一样),然后点击确定.(详细见下图) 本文虽以VS2005打包为例,但是在VS2008下一样也可以用此法,本人已经在VS2008下测试通过。 2:安装向导 关闭后打开安装向导,点击下一步,或者直接点击完成. 3:开始制作 安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹"在右边的空白
Visual Studio修改可执行程序的文件名和路径
 通常我们使用Visual Studio创建的项目工程,生成的可执行程序文件名与工程的名称一致,例如工程名为Test,则生成的可执行文件文件名通常为Test.exe。但有时候我们希望工程生成的可执行文件的名称与工程名称不一样,或者希望生成的可执行文件保存在其他路径下,则可以通过以下步骤来实现。 1. 在Visual Studio 2008下 选择菜单栏“项目”-“ 属性
C++ 调用exe,可等待调用的exe执行完毕后才继续执行父进程 CreateProcess
#include   STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. if( !CreateProcess(
Microsoft Visual Studio 2010编译生成总出现exe写入错误
之前都是在Linux系统下运用GCC编译器调试程序
在Visual Studio中给C语言工程的exe文件添加图标和版本说明
在Visual Studio中,如果你创建的是纯C语言的工程,那么给可执行程序添加图标就没有便捷的入口。 但也只是入口不好找了,添加步骤还是比较简单的,以下为具体操作方法: 右键点击C工程,选择Add->Resource去添加图标。 在弹出的菜单中选Icon,并点击新建      Note:注意看在这个弹出窗口中也可以添加版本说明“Version",后面会详细说明。
Visual Stdio Code 运行生成任务 输出不了
刚刚解决了pip安装的问题,现在打开vscode又出现了问题。 我像平常一样按下ctrl+shift+B 运行我的python文件 但是结果就像我用vc写C语言一样,闪过一个黑窗口的终端界面,然后就没了。没有输出,控制台界面也没有停下来让我好好看看。 我查了查,没有结果。 然后灵机一动,我知道怎么回事了。都怪我手贱,将python.exe这个文件设置成了默认管理员模式运行。 我不知道为什么
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python打包exe教程 web打包成exe教程