[英]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.