关于C++运行CMD命令net time
来源:互联网 发布:网络电视台直播 编辑:程序博客网 时间:2024/05/04 10:24
应同事需要做一个局域网时间同步的,找了下资料发现net time最方便,于新建了一个控制台项目,用CreateProcess运行cmd命令
运行了后发现时间根本就没有改变,折腾了一个晚上才发现错在字符转义上,下面的代码是错误示范
//定义一个用于产生子进程的STARTUPINFO结构体 (定义见CreateProcess,函数说明) STARTUPINFO siStartInfo;//定义一个用于产生子进程的PROCESS_INFORMATION结构体 (定义见CreateProcess,函数说明) PROCESS_INFORMATION piProcInfo;//对STARTUPINFO结构体赋值,对stdin,stdout的Handle设置为刚才得到的管道HANDLE ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));siStartInfo.cb = sizeof(STARTUPINFO);siStartInfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; //允许设置showwindow和设置新进程的输入输出句柄参数 siStartInfo.wShowWindow = SW_HIDE;siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); //意思是:子进程的stdout输出到hStdOutWrite siStartInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE); //意思是:子进程的stderr输出到hStdErrWrite siStartInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);TCHAR CommandLine[] = _T("/c net time \\192.168.1.1 /set /y >C:\\2.txt"); // //ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\cmd.exe"), CommandLine, NULL, SW_SHOW);// 产生子进程,具体参数说明见CreateProcess函数 BOOL bSuccess = CreateProcess(L"C:\\Windows\\System32\\cmd.exe",CommandLine, // 子进程的命令行 NULL, // process security attributes NULL, // primary thread security attributes FALSE, // handles are inherited CREATE_NO_WINDOW, // creation flags 如果想新进程显示窗口, 可以设置CREATE_NEW_CONSOLE NULL, // use parent's environment NULL, // use parent's current directory &siStartInfo, // STARTUPINFO pointer &piProcInfo); // receives PROCESS_INFORMATION if (bSuccess){TCHAR prints[MAX_PATH] = { 0 };_stprintf_s(prints, MAX_PATH, _T("ID:%d,Process:%d\n"), piProcInfo.dwProcessId, piProcInfo.hProcess);//MessageBox(NULL, prints, NULL, MB_SETFOREGROUND);CloseHandle(piProcInfo.hProcess);CloseHandle(piProcInfo.hThread);//WaitForSingleObject(piProcInfo.hProcess, INFINITE);}
以下是正确的代码,写了这么久的代码竟然忽略了在C++两个\\表示一个\ ,
因为远程IP是用双\\表示的,在C++就要多加两个\\
结束语:
感觉CreateProcess不用设置控制台的输入输出流,也能执行成功,因为时间关系就不测试了,有兴趣的自己测试去.
0 0
- 关于C++运行CMD命令net time
- c#---运行cmd命令
- 关于cmd命令运行java文件class
- 运行命令(CMD)大全
- 运行命令(CMD)
- CMD命令运行
- 运行命令--cmd(转载)
- CMD运行命令大全
- C#运行cmd命令
- cmd 运行命令
- cmd mysql运行命令
- Java运行CMD命令
- Java运行cmd命令
- CMD命令不能运行
- qt 运行cmd命令
- nodejs 运行CMD命令
- Qt运行cmd命令
- cmd net命令
- python2.7 Tkinter 入门
- 数据库变更
- 第五章(引用类型)
- 如何利用MySQL语句将自增重置为1
- 生产者消费者模式中条件判断是使用while而不是if
- 关于C++运行CMD命令net time
- JSON的学习和使用
- 数据结构实验之链表四:有序链表的归并
- LeetCode : Contains Duplicate
- 第三章(基本概念——语法,数据类型,流程控制语句,函数)
- android studio 鼠标悬浮出现 fetching documentation
- spring整合redis缓存,以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
- Centos 更新yum源 添加第三方源
- 关于Cannot find element: #app 的解决方法