win10里用MFC获取命令行程序运行时的信息时出现“拒绝访问”的问题
来源:互联网 发布:房地产运营知乎 编辑:程序博客网 时间:2024/05/16 17:41
最近想要用MFC写程序来实现软件数据与服务器数据的同步,用CreatePipe和ReadFile来执行cmd命令并读取显示信息。
用的程序如下:
void CTestMFCDlg::ExecuteCmd(unsigned int CmdType, CString strCmd, CString *strOutput){ // TODO: Add extra validation here SECURITY_ATTRIBUTES sa; HANDLE hRead, hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead, &hWrite, &sa, 0)) { MessageBox(_T("CreatePipe Failed")); return ; } STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; TCHAR* cmdline = StringToChar(strCmd); if (!CreateProcess(NULL, cmdline, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi)) { MessageBox(_T("CreateProcess failed!")); return ; } CloseHandle(hWrite); char buffer[4096] = { 0 }; CString strTmp; DWORD bytesRead; while (1) { if (NULL == ReadFile(hRead, buffer, 4095, &bytesRead, NULL)) { break; } if(UNIX_CMD == CmdType) { UTF8Text2CString(strTmp, buffer); strTmp.Replace(_T("\n"), _T("\r\n")); } else { strTmp += buffer; } *strOutput += strTmp; SetDlgItemText(IDC_EDIT_TEXT, *strOutput); UpdateWindow(); Sleep(1000); }int CharPst;if (( CharPst = strTmp.FindOneOf( _T( "total" ) ) != -1 )); CloseHandle(hRead);}在程序运行的界面如下:
运行后却显示“拒绝访问”的提示信息。
想了很久觉得应该是权限的问题,于是首先修改了debug里面的运行程序的执行权限,即默认以管理员的身份运行(具体可自己百度一下)。然后打开VS编译,又发现VS的权限不够,后来又把VS的执行权限给改了,也是以管理员的身份运行,然后问题完美解决。
0 0
- win10里用MFC获取命令行程序运行时的信息时出现“拒绝访问”的问题
- vs2010 运行时出现无法启动程序 拒绝访问的一个可能的原因
- 关于运行java程序报错拒绝访问的问题
- VS2015运行程序时拒绝访问
- 关于IO流在复制文件时出现java.io.FileNotFoundException: D:\xxx (拒绝访问。) 拒绝访问的问题
- 同域下iframe操作时,js访问document出现"拒绝访问"的问题原因
- asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方案
- 在服务器上发布时出现“对文档路径的访问被拒绝。”的问题
- 在运行MFC时出现mfc42d.dll丢失的问题
- 在监控windows资源时出现拒绝访问的错误
- Directory Delete删除时出现访问被拒绝的错误
- Apache安装时出现OS:拒绝访问的解决办法
- 关于安装.NET Framework 2.0时偶然碰到的问题(提示"Error 205015. 安装程序集..../System.EnterpriseServices.dll失败,原因是出现了系统错误:拒绝访问。")
- 用 VC 获取其它运行中程序的命令行参数
- vs2015调试出现拒绝访问的问题.该怎么解决?
- VC6在win10运行时出现无法单步调试问题的解决办法
- 运行启动项目时出错:无法启动程序......,拒绝访问
- tip : 运行x64程序时, 用debugview收不到X64程序里OutputDebugString打印出的信息
- Unable to open connection to "Oracle, Microsoft provider V1.0.5000.0".
- slab alloc内存分配机制
- Zend Studio使用教程:在AWS上Zend Studio使用Zend Server开发应用程序(1/3)
- 33.session随机抽取之获取抽取session的明细数据
- Java-快速排序算法的实现
- win10里用MFC获取命令行程序运行时的信息时出现“拒绝访问”的问题
- 机器学习-1.机器学习的基本概念
- [note]如何删除linux内核
- TbSchedule的SingleTask使用测试
- Android开发中的MVP模式的使用记录
- linux更换gcc g++版本
- Struts2之Result详解
- mysql架构
- [绍棠] Carthage使用心得-让自己的项目支持Carthage