簡體   English   中英

指定的值無效。 使用C#添加防火牆規則

[英]A specified value is not valid. Adding firewall rule with C#

我做了一個Windows窗體應用程序,只需拖放.exe文件即可創建防火牆規則,如果.exe文件位於

X:\\ Program文件(x86)...或X:\\ Program文件中...

我認為問題所在的代碼部分是:

    private void button1_Click(object sender, EventArgs e)
    {

        foreach (string item in listBox1.Items)
        //MessageBox.Show(Path.GetFileName(item));

        {
            string addToFirewall = "/K netsh advfirewall firewall add rule name=" + Path.GetFileName(item) + " dir=out action=block program=" + item;
            System.Diagnostics.Process proc2 = new System.Diagnostics.Process();
            proc2.StartInfo.CreateNoWindow = false;
            proc2.StartInfo.Verb = "runas";
            proc2.StartInfo.FileName = "cmd";
            proc2.StartInfo.Arguments = "/env /user:" + "Administrator" + "cmd" + addToFirewall;
            proc2.Start();
            //MessageBox.Show(addToFirewall);
        }

    } 

例如,添加/創建防火牆規則的有效CMD命令為:

netsh advfirewall firewall add rule name="GOM.EXE" dir=out action=block program="C:\Program Files (x86)\GRETECH\GomPlayer\GOM.EXE"

並且如果我拖放GOM.exe文件並嘗試創建防火牆規則,則會收到錯誤消息:

特定值無效。 圖片

我的第一個猜測是空格之間存在空格問題

程序()文件和程序()文件()(x86)

您的問題是Program Files包含一個空格,因此您需要在其周圍添加引號。 將行更改為此:

string addToFirewall = "/K netsh advfirewall firewall add rule name=" + Path.GetFileName(item) + " dir=out action=block program=\"" + item + "\"";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM