我在Windows 10和Qt Creator 4.8.2(基于Qt 5.12.2)中。我想更改mac地址,但我不知道如何更改。也是ip地址,网关和dns。 谢谢
lenon366 回答:Qt C ++如何更改MAC地址?
在这里,您具有如何更改MAC地址,ips和dns。基于Qt 5.12.2(MSVC 2015,32位)的Qt creator 4.8.2
.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QProcess>
#include<QSettings>
#include<QString>
#include<QDebug>
#include<QFile>
#include<QVariant>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void restartNetwork();
void setNetEnabled (bool isEnabled);
void runCMD (QString cmdlst);
void configNet(QString ip1,QString ip2,QString ip3,QString ip4,QString gateway,QString dns1,QString dns2);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QSettings settings(R"(HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001)",QSettings::NativeFormat);
settings.setValue("NetworkAddress","AABBCCDDEEFF");
qDebug() << settings.value("NetworkAddress");
configNet("10.10.0.10","192.168.0.242","192.168.10.200","10.20.0.30","10.10.0.1","190.190.223.225","190.190.223.235");
restartNetwork();
}
void MainWindow::restartNetwork()
{
setNetEnabled (false);
setNetEnabled (true);
}
void MainWindow::setNetEnabled(bool isEnabled)
{
QString cmdlst;
if(isEnabled)
{
cmdlst = "netsh interface set interface Ethernet ENABLED";
}
else
{
cmdlst = "netsh interface set interface Ethernet DISABLED";
}
runCMD(cmdlst);
}
void MainWindow::configNet(QString ip1,QString dns2)
{
QString ip1CMD,ip2CMD,ip3CMD,ip4CMD,dns1CMD,dns2CMD;
if(ip1!="")
{
ip1CMD = QString("netsh interface ip set address Ethernet static %1 255.255.255.0 %2").arg(ip1).arg(gateway);
runCMD(ip1CMD);
}
if(ip2!="")
{
ip2CMD = QString("netsh interface ip add address Ethernet %1 255.255.255.0").arg(ip2);
runCMD(ip2CMD);
}
if(ip3!="")
{
ip3CMD = QString("netsh interface ip add address Ethernet %1 255.255.255.0").arg(ip3);
runCMD(ip3CMD);
}
if(ip4!="")
{
ip4CMD = QString("netsh interface ip add address Ethernet %1 255.255.255.0").arg(ip4);
runCMD(ip4CMD);
}
if(dns1!="")
{
dns1CMD = QString("netsh interface ip add dns Ethernet %1").arg(dns1);
runCMD(dns1CMD);
}
if(dns1!="")
{
dns2CMD = QString("netsh interface ip add dns Ethernet %1").arg(dns2);
runCMD(dns2CMD);
}
}
void MainWindow::runCMD(QString cmdlst)
{
QProcess process;
process.start(cmdlst);
qDebug ()<<cmdlst;
process.waitForStarted();
process.waitForFinished();
qDebug()<<QString::fromLocal8Bit(process.readAllStandardOutput());
}
我希望它能帮助您!