1.VS2015 新建项目->win32 控制台应用程序
以下操作实现跨平台
(1).配置属性-常规-MFC的使用->使用标准Windows库或者在静态库中使用MFC
(2).配置属性-c/c++-代码生成-运行库->多线程(/MT)
2.头文件stdafx.h
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
//#define _AFXDLL
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: 在此处引用程序需要的其他头文件
#include <afxwin.h> // MFC core and standard components
#include <SetupAPI.h>
#pragma comment(lib, "Setupapi.lib")
3.主程序ConsoleApplication5.cpp
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int main()
{
LPTSTR buffer = _T("demo1,demo2,demo3");
printf("dev_ID=%S \n", buffer);
if (buffer)
{
LPTSTR demo = _T("demo2");
if (_tcsstr(buffer, demo))
{
printf("Detect demo2 !!!!!!\n");
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
LPTSTR szCmdline = _tcsdup(TEXT("Driver\\demo\\Setup.exe"));
// Start the child process.
if (!CreateProcess(NULL, // No module name (use command line)
szCmdline, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
/*return 0;*/
exit(0);
}
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
printf(" demo Install Finished !!!!!!\n");
}
/*-------------demo end-----------------*/
}
return 0;
}