Added dns change error messages

This commit is contained in:
Jaex 2014-03-31 13:23:56 +03:00
parent 4eefd960ad
commit 6a15f8d5d3
2 changed files with 49 additions and 41 deletions

View file

@ -81,40 +81,29 @@ public string[] GetDNS()
return (string[])adapter["DnsServerSearchOrder"];
}
public bool SetDNS(string primary, string secondary)
public uint SetDNS(string primary, string secondary)
{
try
using (ManagementBaseObject parameters = adapter.GetMethodParameters("SetDNSServerSearchOrder"))
{
using (ManagementBaseObject parameters = adapter.GetMethodParameters("SetDNSServerSearchOrder"))
if (primary == null || secondary == null)
{
if (parameters != null)
{
if (primary == null || secondary == null)
{
// Obtain DNS server address automatically
parameters["DNSServerSearchOrder"] = null;
}
else
{
parameters["DNSServerSearchOrder"] = new string[] { primary, secondary };
}
// Obtain DNS server address automatically
parameters["DNSServerSearchOrder"] = null;
}
else
{
parameters["DNSServerSearchOrder"] = new string[] { primary, secondary };
}
using (ManagementBaseObject result = adapter.InvokeMethod("SetDNSServerSearchOrder", parameters, null))
{
return (uint)result["ReturnValue"] == 0;
}
}
// http://msdn.microsoft.com/en-us/library/aa393295(v=vs.85).aspx
using (ManagementBaseObject result = adapter.InvokeMethod("SetDNSServerSearchOrder", parameters, null))
{
return (uint)result["ReturnValue"];
}
}
catch (Exception e)
{
DebugHelper.WriteException(e);
}
return false;
}
public bool SetDNSAutomatic()
public uint SetDNSAutomatic()
{
return SetDNS(null, null);
}

View file

@ -129,27 +129,46 @@ private void btnSave_Click(object sender, EventArgs e)
if (adapter != null)
{
bool result = false;
uint result;
if (cbAutomatic.Checked)
try
{
result = adapter.SetDNSAutomatic();
}
else
{
string primaryDNS = txtPreferredDNS.Text.Trim();
string secondaryDNS = txtAlternateDNS.Text.Trim();
if (Helpers.IsValidIPAddress(primaryDNS) && Helpers.IsValidIPAddress(secondaryDNS))
if (cbAutomatic.Checked)
{
result = adapter.SetDNS(primaryDNS, secondaryDNS);
result = adapter.SetDNSAutomatic();
}
else
{
string primaryDNS = txtPreferredDNS.Text.Trim();
string secondaryDNS = txtAlternateDNS.Text.Trim();
if (Helpers.IsValidIPAddress(primaryDNS) && Helpers.IsValidIPAddress(secondaryDNS))
{
result = adapter.SetDNS(primaryDNS, secondaryDNS);
}
else
{
throw new Exception("Not valid ip address.");
}
}
if (result == 0)
{
NativeMethods.DnsFlushResolverCache();
MessageBox.Show("DNS successfully set.", "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (result == 1)
{
MessageBox.Show("DNS successfully set. Reboot is required.", "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (result > 1)
{
MessageBox.Show("DNS set failed with error code: " + result, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
if (result)
catch (Exception ex)
{
NativeMethods.DnsFlushResolverCache();
MessageBox.Show("DNS successfully set.", "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("DNS set failed.\r\n" + ex.ToString(), "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}