How to programmatically turn on “Network Discovery” in Windows OS?

雨燕双飞 提交于 2019-12-07 08:40:51

问题


My project open ports using UPnP protocol. Windows disables UPnP device discovery by default, one needs to turn on Network Discovery in Network and Sharing Center to enable UPnP device discovery.

Is there a way to do this programatically?


回答1:


You can use cmd command for enable network discovery

netsh firewall set service type = upnp mode = mode

then give that command as parameter to code

public void ExecuteCommandSync(object command)
{
  try
  {
    // create the ProcessStartInfo using "cmd" as the program to be run,
    // and "/c " as the parameters.
    // Incidentally, /c tells cmd that we want it to execute the command that follows,
    // and then exit.
    System.Diagnostics.ProcessStartInfo procStartInfo =
      new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

    // The following commands are needed to redirect the standard output.
    // This means that it will be redirected to the Process.StandardOutput StreamReader.
    procStartInfo.RedirectStandardOutput = true;
    procStartInfo.UseShellExecute = false;
    // Do not create the black window.
    procStartInfo.CreateNoWindow = true;
    // Now we create a process, assign its ProcessStartInfo and start it
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo = procStartInfo;
    proc.Start();
    // Get the output into a string
    string result = proc.StandardOutput.ReadToEnd();
    // Display the command output.
    Console.WriteLine(result);
  }
  catch (Exception objException)
  {
    // Log the exception
  }
}

If that command doesnt work find another command to enable network discovery acording to your system.



来源:https://stackoverflow.com/questions/8322177/how-to-programmatically-turn-on-network-discovery-in-windows-os

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!