2016-07-18 3 views
0

에 명령 줄 인수를 사용하는 C# 프로그램을 작성하여 방화벽을 설정 및 해제합니다.C#을 사용하여 방화벽을 켜고 끕니다.

Process proc = new Process(); 
string top = "netsh.exe"; 
proc.StartInfo.Arguments = "**Advfirewall set allprofiles state on**"; 
proc.StartInfo.FileName = top; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true; 
proc.StartInfo.CreateNoWindow = true; 
proc.Start(); 
proc.WaitForExit(); 
// MessageBox.Show("Disable"); 
button1.Text = "Set On"; 
status = false; 

또한 관리자 권한으로 애플리케이션을 실행합니다. 응용 프로그램은 관리자 권한으로 자동 실행되지만 방화벽 상태를 설정하거나 해제하지는 않습니다.

cmd (netsh)에서 동일한 명령을 실행하면 방화벽이 켜지거나 꺼집니다.

왜 이것이 작동하지 않는지 아는 사람이 있습니까?

+0

확실한 것은 '**'입니다. 당신이 그들을 제거하면 어떻게됩니까? –

+0

예외가 있습니까? 오류 코드? –

+0

이 명령은'netsh advfirewall allprofiles state on on'이므로'**'https://technet.microsoft.com/en-us/library/dd772588을 제거하십시오. – Slai

답변

2

동일한 코드를 실행하지만 **을 제거하는 것이 효과가있는 것 같습니다. 관리자로 프로세스를 시작하고 당신은 또한 사용할 수있는 관리자로 프로세스를 시작하는 응용 프로그램을 실행해야

proc.StartInfo.Arguments = "Advfirewall set allprofiles state on"; 

참고 :이에

proc.StartInfo.Arguments = "**Advfirewall set allprofiles state on**"; 

: 즉, 당신은이를 변경해야 :

proc.StartInfo.Verb = "runas"; 
관련 문제