4
私はC#でIPパラメータを変更する簡単なプログラムを作ろうとしています。それを実行するためにHow can you change Network settings (IP Address, DNS, WINS, Host Name) with code in C# 、そして私自身の方法で作られた: 私はこのコードを使用することは、Windows XPで正常に動作しますが、Windows 7(スターターまたはPro)上で動作していないC#のネットワーク設定を変更する
public void changerip(string adresse, string NIC)
{
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if (objMO["Caption"].Equals(NIC))
{
try
{
if (adresse != "0")
{
ManagementBaseObject setIP;
ManagementBaseObject newIP =
objMC.GetMethodParameters("EnableStatic");
newIP["IPAddress"] = new string[] { "192.168." + adresse + ".50" };
newIP["SubnetMask"] = new string[] { "255.255.255.0" };
setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
ManagementBaseObject setGateway;
ManagementBaseObject newGateway =
objMO.GetMethodParameters("SetGateways");
newGateway["DefaultIPGateway"] = new string[] { "192.168." + adresse + ".254" };
newGateway["GatewayCostMetric"] = new int[] { 1 };
setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);
ManagementBaseObject newDNS =
objMO.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = "192.168.1.24,192.168.1.2".Split(',');
ManagementBaseObject setDNS =
objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
}
else
{
ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = null;
ManagementBaseObject enableDHCP = objMO.InvokeMethod("EnableDHCP", null, null);
ManagementBaseObject setDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
//Save all Gateways into an array
string[] gateways = (string[])objMO["DefaultIPGateway"];
ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");
ManagementBaseObject newGate = objMO.GetMethodParameters("SetGateways");
//Set last value of the array(always the Gateway recived by DHCP) as the default Gateway
newGate["DefaultIPGateway"] = new string[] { gateways[gateways.Length - 1] };
newGate["GatewayCostMetric"] = new int[] { 1 };
}
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
}
}
を。私は、OSからの例外やエラー/セキュリティメッセージの立ち上がりはありません。
誰かが何が起こったのか考えていますか?
これを試しても機能しません。また、私はそれが証明書の問題または何かのような結果になる可能性があると思うドメイン上で私のユーザー名でログオンしようとしました。 – Deathdigger
実際にあなたは正しいです!コンピュータの管理者は「管理者として実行」と同じではありません...また、Visual Studio 2K10 Expressで作成したショートカットでは実行できません。新しいものを手動で作成する必要があります。あなたの助けをありがとう – Deathdigger
http://stackoverflow.com/questions/2818179/how-do-i-force-my-net-application-to-run-as-administratorも参照してください – Rocky