IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> C# 使用管理员身份运行CMD,修改当前的适配器的IP -> 正文阅读

[网络协议]C# 使用管理员身份运行CMD,修改当前的适配器的IP

C# 使用管理员身份运行CMD,修改当前的适配器的IP

这个页面仅供我自己记录,是查找各个博客得来的结果,如果大神发现错误,欢迎指正。(原地址已经记不清了,如果侵权,请联系我删文)

//使用管理员身份打开cmd,据说这个方法某些环境不管用,不知什么原因
public void ExecuteCommandAsAdmin()
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//startInfo.FileName是要打开的程序
startInfo.FileName = “cmd.exe”;
//startInfo.Arguments是要执行的命令
string cmd = “netsh interface ip set address " + activeAdapter.Name + " static 192.168.0.188 255.255.255.0”;
startInfo.Arguments = "/C "+cmd;
print(startInfo.Arguments);
startInfo.Verb = “runas”;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
process.Close();
}


**直接打开从cmd,且输入命令行,不是管理员身份**
ProcessCommand() 这个方法不能直接调用,需要新开一个线程

void Start()
{
Thread cmd = new Thread(CmdCtr);
cmd.Start();
}

//传入的命令行指令
private void CmdCtr()
{
    //打开控制面板
    string cmd = "netsh interface ip set address "+ activeAdapter.Name + " static 192.168.0.188 255.255.255.0";
    print(cmd);
    //string cmd = "control";
    //ProcessCommand("cmd.exe", cmd);
    print("修改");
}

///
/// 打开cmd
///
/// 打开的程序
/// 要输入的命令
//string cmd = “control”;
//ProcessCommand(“cmd.exe”, cmd);
public static void ProcessCommand(string command, string argument)
{
//UnityEngine.Debug.Log(argument);
ProcessStartInfo info = new ProcessStartInfo(command);
//启动应用程序时要使用的一组命令行参数。
//但是对于cmd来说好像是无效的,可能是因为UseShellExecute的值设置为false了
//但是对于svn的程序TortoiseProc.exe是可以使用的一个参数
//info.Arguments = argument;
//是否弹窗
info.CreateNoWindow = true;
//获取或设置指示不能启动进程时是否向用户显示错误对话框的值。
info.ErrorDialog = true;
//获取或设置指示是否使用操作系统 shell 启动进程的值。
info.UseShellExecute = false;

    if (info.UseShellExecute)
    {
        info.RedirectStandardOutput = false;
        info.RedirectStandardError = false;
        info.RedirectStandardInput = false;
    }
    else
    {
        info.RedirectStandardOutput = true; //获取或设置指示是否将应用程序的错误输出写入 StandardError 流中的值。
        info.RedirectStandardError = true; //获取或设置指示是否将应用程序的错误输出写入 StandardError 流中的值。
        info.RedirectStandardInput = true;//获取或设置指示应用程序的输入是否从 StandardInput 流中读取的值。
        info.StandardOutputEncoding = System.Text.Encoding.UTF8;
        info.StandardErrorEncoding = System.Text.Encoding.UTF8;
    }
    //启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。
    Process process = Process.Start(info);
    //StandardInput:获取用于写入应用程序输入的流。
    //将字符数组写入文本流,后跟行终止符。
    process.StandardInput.WriteLine(argument);
    //获取或设置一个值,该值指示 StreamWriter 在每次调用 Write(Char) 之后是否都将其缓冲区刷新到基础流。
    process.StandardInput.AutoFlush = true;

    if (!info.UseShellExecute)
    {
        UnityEngine.Debug.Log(process.StandardOutput);
        UnityEngine.Debug.Log(process.StandardError);
    }
    //关闭
    process.Close();
}
**遍历当前所有的网络适配器名称**

//NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
        //foreach (NetworkInterface adapter in adapters)
        //{
        //    print(adapter.Name);
        //}


**查找当前所使用的网络适配器名称**
 
        //NetworkInterfaceType.Ethernet 是以太网  NetworkInterfaceType.Wireless80211 是无线网卡
        NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
        activeAdapter = networks.First(x => x.NetworkInterfaceType != NetworkInterfaceType.Loopback
                           && x.NetworkInterfaceType != NetworkInterfaceType.Tunnel
                           && x.OperationalStatus == OperationalStatus.Up
                           && x.Name.StartsWith("vEthernet") == false);
        print(activeAdapter.Name);


  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:41:42  更:2022-02-24 15:43:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:56:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码