首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不起作用的参数执行CMD

问使用不起作用的参数执行CMD
EN

Stack Overflow用户
提问于 2016-10-29 05:40:30
回答 2查看 420关注 0票数 0

我正在尝试执行此CMD命令来更改我的DNS,但它不起作用。我没有得到任何错误。它要求以管理员身份运行,但它不起作用。

如果我手动将参数输入到CMD中,它就会起作用。

下面是我的代码:

代码语言:javascript
复制
System.Diagnostics.ProcessStartInfo myProcessInfo = new System.Diagnostics.ProcessStartInfo(); 
myProcessInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\System32\cmd.exe";
myProcessInfo.Arguments = "set DNS1=198.168.97.1 " +
    "set DNS2=5.2.2.2 " +
    "set DNS3=206.19.29.17 " +
    "set INTERFACE=Ethernet " +
    "netsh int ipv4 set dns name='%INTERFACE%' static %DNS1% primary validate=no " +
    "netsh int ipv4 add dns name='%INTERFACE%' %DNS2% index=2 " +
    "netsh int ipv4 add dns name='%INTERFACE%' %DNS3% index=3" +
    "ipconfig /flushdns";

myProcessInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
myProcessInfo.Verb = "runas"; 
System.Diagnostics.Process.Start(myProcessInfo);
EN

回答 2

Stack Overflow用户

发布于 2016-10-29 06:11:38

实际上,您所做的是将所有命令作为常规参数进行附加。为每个命令运行命令行,或者在命令之间添加&符号以链接这些命令。此外,您还需要使用/c-argument来传递命令。因此,您的代码将如下所示:

代码语言:javascript
复制
myProcessInfo.Arguments = "/c 'set DNS1=198.168.97.1 && " +
                                    "set DNS2=5.2.2.2 && " +
                                    "set DNS3=206.19.29.17 && " +
                                    "set INTERFACE=Ethernet && " +
                                    "netsh int ipv4 set dns name='%INTERFACE%' static %DNS1% primary validate=no && " +
                                    "netsh int ipv4 add dns name='%INTERFACE%' %DNS2% index=2 && " +
                                    "netsh int ipv4 add dns name='%INTERFACE%' %DNS3% index=3 && " +
                                    "ipconfig /flushdns'";
票数 1
EN

Stack Overflow用户

发布于 2016-10-29 06:53:34

可能是这样的:

代码语言:javascript
复制
var tempFileName = Path.GetTempFileName() + ".cmd";
File.WriteAllLines(tempFileName, new[]
{
    "set DNS1=198.168.97.1 ", 
    "set DNS2=5.2.2.2 ",
    "set DNS3=206.19.29.17 ",
    "set INTERFACE=Ethernet ",
    "netsh int ipv4 set dns name='%INTERFACE%' static %DNS1% primary validate=no ",
    "netsh int ipv4 add dns name='%INTERFACE%' %DNS2% index=2 ",
    "netsh int ipv4 add dns name='%INTERFACE%' %DNS3% index=3",
    "ipconfig /flushdns"
});

var myProcessInfo = new ProcessStartInfo();
myProcessInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%") 
    + @"\System32\cmd.exe /C " + tempFileName;
myProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcessInfo.Verb = "runas";
var myProcess = Process.Start(myProcessInfo);
if (myProcess != null)
    while (!myProcess.HasExited)
    {
        myProcess.Refresh();
        Thread.Sleep(TimeSpan.FromSeconds(1));
    }
File.Delete(tempFileName);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40313551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档