在C:\下放置mac.txt檔案 內容為 12345 00:00:00:00:00:00
電腦名稱 :123
電腦編號 :45
網路卡號 :00:00:00:00:00:00
using System; using System.Management; using System.Runtime.InteropServices; using System.IO; using System.Text; class Program { public static void Main() { FileInfo filename = new FileInfo("C:\\done"); if(!filename.Exists) { string fn = "C:\\mac.txt"; FileStream fs = new FileStream(fn,FileMode.Open); StreamReader sr = new StreamReader(fs,Encoding.UTF8); string[] map = new string[50000]; string mac = APP.GetMAC(); while(sr.Peek() != -1){ string tmp = sr.ReadLine(); string[] tmp_sp = tmp.Split(' '); map[Convert.ToInt32(tmp_sp[0])] = tmp_sp[1]; } for (int i = 30000; i < 40700; i++) { if (map[i] != null) { if (map[i].CompareTo(mac) == 0) { /*更改電腦名稱,群組,網路位址*/ APP.change_name(i); APP.change_group(i); APP.SetNetIP(i); FileStream files = filename.Create(); files.Close(); } } } fs.Close(); } } } class APP { //修改電腦名稱_code enum _COMPUTER_NAME_FORMAT { ComputerNameNetBIOS, ComputerNameDnsHostname, ComputerNameDnsDomain, ComputerNameDnsFullyQualified, ComputerNamePhysicalNetBIOS, ComputerNamePhysicalDnsHostname, ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsFullyQualified, ComputerNameMax }; [DllImport("kernel32.dll")] static extern bool SetComputerName(string lpComputerName); [DllImport("kernel32.dll")] static extern bool SetComputerNameEx(_COMPUTER_NAME_FORMAT iType, string lpComputerName); public static void change_name(int i) { string room = Convert.ToString(i / 100); string id = ""; int sitnum = i % 100; if (sitnum < 10) id = string.Concat("0",Convert.ToString(sitnum)); else id = Convert.ToString(sitnum); string MachineName = ""; if(room.CompareTo("313") == 0) MachineName = string.Concat("P",room,"_",id); else MachineName = string.Concat("CC",room,"_",id); SetComputerName(MachineName); SetComputerNameEx(_COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname, MachineName); //修改電腦名稱_code_end } //修改工作群組_code public static void change_group(int i) { string num = Convert.ToString(i / 100); string WorkgroupName = ""; if(num.CompareTo("313") == 0) WorkgroupName = string.Concat("P", num); else WorkgroupName = string.Concat("CC",num); ManagementObject manage = new ManagementObject(string.Format("Win32_ComputerSystem.Name='{0}'", Environment.MachineName)); object[] args = { WorkgroupName, null, null, null }; manage.InvokeMethod("JoinDomainOrWorkgroup", args); } //修改工作群組_code_end //取得mac address_code public static string GetMAC() { using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")) { ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"]) return mo["MacAddress"].ToString(); } } return null; } //取得mac address_code_end //修改ip address_code public static void SetNetIP(int i) { string class_name =Convert.ToString(i / 100); string id = Convert.ToString(i % 100); string cclass; switch(class_name) { case "305": cclass = "35"; break; case "307": cclass = "37"; break; case "402": cclass = "42"; break; case "403": cclass = "43"; break; case "406": cclass = "46"; break; case "313": cclass = "13"; break; default: cclass = "0"; break; } string ip, submask, gateway, DNS1, DNS2; string Cls = "Win32_NetworkAdapterConfiguration"; string NS = "root\\CIMV2"; ip = string.Concat("192.168.", cclass, ".", id); submask = "255.255.255.0"; gateway = string.Concat("192.168.", cclass, ".254"); DNS1 = "120.125.1.1"; DNS2 = "120.125.2.1"; using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")) { string index = ""; ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"]) { index = mo["Index"].ToString(); } } ManagementObject objCls = new ManagementObject(NS, Cls + ".INDEX=" + index, null); ManagementBaseObject objInPara; objInPara = objCls.GetMethodParameters("EnableStatic"); objInPara["IPAddress"] = new string[] { ip}; objInPara["SubnetMask"] = new string[] { submask}; objCls.InvokeMethod("EnableStatic", objInPara, null); objInPara = objCls.GetMethodParameters("SetGateways"); objInPara["DefaultIPGateway"] = new string[] { gateway}; objCls.InvokeMethod("SetGateways", objInPara, null); objInPara = objCls.GetMethodParameters("SetDNSServerSearchOrder"); objInPara["DNSServerSearchOrder"] = new string[] { DNS1,DNS2}; objCls.InvokeMethod("SetDNSServerSearchOrder", objInPara, null); } } //修改ip address_code_end }