Qt C ++如何更改MAC地址?

我在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());
}

我希望它能帮助您!

本文链接:https://www.f2er.com/3113271.html

大家都在问