managementclass

知识
杨阳老师 2019-07-17 16:56:44

己经 using System.ManagementClass,调试时还是出现错误 3 找不到类型或命名空间名称“ManagementClass”(是否缺少 using 指令或程序集引用?) 这是为什么呀?WINFORM程序标准引用是不包含System.Management的,要手工添加引用

#managementclass#

返回顶部

影响力:7241

ManagementClass 无法获取磁盘分区

描述: WINFORM程序,代码如下:publicstaticDataTabletestDisk(){DataTabledt=newDataTable();dt.Columns.Add("path");dt.Columns.Add("totalSpace");dt.Columns.Add("freeSpace");dt.Colum... WINFORM程序,代码如下:
public static DataTable testDisk()
{
DataTable dt = new DataTable();
dt.Columns.Add("path");
dt.Columns.Add("totalSpace");
dt.Columns.Add("freeSpace");
dt.Columns.Add("freePencent");

ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection disks = diskClass.GetInstances();
try
{
foreach (ManagementObject disk in disks)
{
DataRow dr;
UInt64 k = 1024;
dr = dt.NewRow();
dr[0] = disk["Name"].ToString();
dr[1] = (UInt64)(disk["FreeSpace"]) / k / k;//转为MB
dr[2] = (UInt64)(disk["Size"]) / k / k;//转为MB
int free = int.Parse((UInt64.Parse(dr[1].ToString())).ToString());
int total = int.Parse((UInt64.Parse(dr[2].ToString())).ToString());
dr[3] = (((free * 1.0000) / (total * 1.0000)) * 100).ToString("f2") + "%";
dr[1] += "MB";
dr[2] += "MB";
dt.Rows.Add(dr);
}

//MessageBox.Show(freeSpace.ToString());

return dt;
}
catch (Exception ex)
{
return dt;
}
}
在WIN7 SERVER2008中获取分区都正常,但是在2012中获取分区返回为空,尝试使用管理员身份运行也不行,求大神帮忙看下是什么地方的问题,是不是SERVER2012中不支持Win32_LogicalDisk,需要换成什么
补充,测试是在VM14.1.3的虚拟机中测试的,无法获取温度功耗传感器参数是可以理解的,但是无法获取磁盘分区信息就很奇怪了。编译环境VS2017,.NET4.7
展开
这个解答帮助过2890人

using System;
using System.Management; //还需要引用;
using System.Collections;
using System.Collections.Specialized;
using System.Text;

namespace WindowsFormsApplication1
{
#region WMIPath
public enum WMIPath
{
// 硬件
Win32_Processor, // CPU 处理器
Win32_PhysicalMemory, // 物理内存条
Win32_Keyboard, // 键盘
Win32_PointingDevice, // 点输入设备,包括鼠标。
Win32_FloppyDrive, // 软盘驱动器
Win32_DiskDrive, // 硬盘驱动器
Win32_CDROMDrive, // 光盘驱动器
Win32_BaseBoard, // 主板
Win32_BIOS, // BIOS 芯片
Win32_ParallelPort, // 并口
Win32_SerialPort, // 串口
Win32_SerialPortConfiguration, // 串口配置
Win32_SoundDevice, // 多媒体设置,一般指声卡。
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP)
Win32_USBController, // USB 控制器
Win32_NetworkAdapter, // 网络适配器
Win32_NetworkAdapterConfiguration, // 网络适配器设置
Win32_Printer, // 打印机
Win32_PrinterConfiguration, // 打印机设置
Win32_PrintJob, // 打印机任务
Win32_TCPIPPrinterPort, // 打印机端口
Win32_POTSModem, // MODEM
Win32_POTSModemToSerialPort, // MODEM 端口
Win32_DesktopMonitor, // 显示器
Win32_DisplayConfiguration, // 显卡
Win32_DisplayControllerConfiguration, // 显卡设置
Win32_VideoController, // 显卡细节。
Win32_VideoSettings, // 显卡支持的显示模式。

// 操作系统
Win32_TimeZone, // 时区
Win32_SystemDriver, // 驱动程序
Win32_DiskPartition, // 磁盘分区
Win32_LogicalDisk, // 逻辑磁盘
Win32_LogicalDiskToPartition, // 逻辑磁盘所在分区及始末位置。
Win32_LogicalMemoryConfiguration, // 逻辑内存配置
Win32_PageFile, // 系统页文件信息
Win32_PageFileSetting, // 页文件设置
Win32_BootConfiguration, // 系统启动配置
Win32_ComputerSystem, // 计算机信息简要
Win32_OperatingSystem, // 操作系统信息
Win32_StartupCommand, // 系统自动启动程序
Win32_Service, // 系统安装的服务
Win32_Group, // 系统管理组
Win32_GroupUser, // 系统组帐号
Win32_UserAccount, // 用户帐号
Win32_Process, // 系统进程
Win32_Thread, // 系统线程
Win32_Share, // 共享
Win32_NetworkClient, // 已安装的网络客户端
Win32_NetworkProtocol, // 已安装的网络协议
}
#endregion

/// <summary>
/// 获取系统信息
/// </summary>
/// <example>
/// <code>
/// WMI w = new WMI(WMIPath.Win32_NetworkAdapterConfiguration);
/// for (int i = 0; i < w.Count; i ++)
/// {
/// if ((bool)w[i, "IPEnabled"])
/// {
/// Console.WriteLine("Caption:{0}", w[i, "Caption"]);
/// Console.WriteLine("MAC Address:{0}", w[i, "MACAddress"]);
/// }
/// }
/// </code>
/// </example>
public sealed class WMI
{
private ArrayList mocs;
private StringDictionary names; // 用来存储属性名,便于忽略大小写查询正确名称。

/// <summary>
/// 信息集合数量
/// </summary>
public int Count
{
get { return mocs.Count; }
}

/// <summary>
/// 获取指定属性值,注意某些结果可能是数组。
/// </summary>
public object this[int index, string propertyName]
{
get
{
try
{
string trueName = names[propertyName.Trim()]; // 以此可不区分大小写获得正确的属性名称。
Hashtable h = (Hashtable)mocs[index];
return h[trueName];
}
catch
{
return null;
}
}
}

/// <summary>
/// 返回所有属性名称。
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public string[] PropertyNames(int index)
{
try
{
Hashtable h = (Hashtable)mocs[index];
string[] result = new string[h.Keys.Count];

h.Keys.CopyTo(result, 0);

Array.Sort(result);
return result;
}
catch
{
return null;
}
}

/// <summary>
/// 返回测试信息。
/// </summary>
/// <returns></returns>
public string Test()
{
try
{
StringBuilder result = new StringBuilder(1000);

for (int i = 0; i < Count; i++)
{
int j = 0;
foreach (string s in PropertyNames(i))
{
result.Append(string.Format("{0}:{1}={2}\n", ++j, s, this[i, s]));

if (this[i, s] is Array)
{
Array v1 = this[i, s] as Array;
for (int x = 0; x < v1.Length; x++)
{
result.Append("\t" + v1.GetValue(x) + "\n");
}
}
}
result.Append("======WMI=======\n");
}

return result.ToString();
}
catch
{
return string.Empty;
}
}

/// <summary>
/// 构造函数
/// </summary>
/// <param name="path"></param>
public WMI(string path)
{
names = new StringDictionary();
mocs = new ArrayList();

try
{
ManagementClass cimobject = new ManagementClass(path);
ManagementObjectCollection moc = cimobject.GetInstances();

bool ok = false;
foreach (ManagementObject mo in moc)
{
Hashtable o = new Hashtable();
mocs.Add(o);

foreach (PropertyData p in mo.Properties)
{
o.Add(p.Name, p.Value);
if (!ok) names.Add(p.Name, p.Name);
}

ok = true;
mo.Dispose();
}
moc.Dispose();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}

/// <summary>
/// 构造函数
/// </summary>
/// <param name="path"></param>
public WMI(WMIPath path)
: this(path.ToString())
{
}
}
}

追问

引用都添加了,报错不是报在没有引用上
ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");//这里返回的对象为空
ManagementObjectCollection disks = diskClass.GetInstances();//这里报错
程序在WIN7和SERVER2008执行获取都没问题

编辑时间 2019-01-13 12:17:19
影响力:5809

J CLASS MANAGEMENT注册过商标吗?还有哪些分类可以注册?

这个解答帮助过3776人

J CLASS MANAGEMENT商标总申请量1件
其中已成功注册0件,有0件正在申请中,无效注册1件,0件在售中。
经八戒知识产权统计,J CLASS MANAGEMENT还可以注册以下商标分类:
第1类(化学制剂、肥料)
第2类(颜料油漆、染料、防腐制品)
第3类(日化用品、洗护、香料)
第4类(能源、燃料、油脂)
第5类(药品、卫生用品、营养品)
第6类(金属制品、金属建材、金属材料)
第7类(机械设备、马达、传动)
第8类(手动器具(小型)、餐具、冷兵器)
第9类(科学仪器、电子产品、安防设备)
第10类(医疗器械、医疗用品、成人用品)
第11类(照明洁具、冷热设备、消毒净化)
第12类(运输工具、运载工具零部件)
第13类(军火、烟火、个人防护喷雾)
第14类(珠宝、贵金属、钟表)
第15类(乐器、乐器辅助用品及配件)
第16类(纸品、办公用品、文具教具)
第17类(橡胶制品、绝缘隔热隔音材料)
第18类(箱包、皮革皮具、伞具)
第19类(非金属建筑材料)
第20类(家具、家具部件、软垫)
第21类(厨房器具、家用器皿、洗护用具)
第22类(绳缆、遮蓬、袋子)
第23类(纱、线、丝)
第24类(纺织品、床上用品、毛巾)
第25类(服装、鞋帽、袜子手套)
第26类(饰品、假发、纽扣拉链)
第27类(地毯、席垫、墙纸)
第28类(玩具、体育健身器材、钓具)
第29类(熟食、肉蛋奶、食用油)
第30类(面点、调味品、饮品)
第31类(生鲜、动植物、饲料种子)
第32类(啤酒、不含酒精的饮料)
第33类(酒、含酒精饮料)
第34类(烟草、烟具)
第35类(广告、商业管理、市场营销)
第36类(金融事务、不动产管理、典当担保)
第37类(建筑、室内装修、维修维护)
第38类(电信、通讯服务)
第39类(运输仓储、能源分配、旅行服务)
第40类(材料加工、印刷、污物处理)
第42类(研发质控、IT服务、建筑咨询)
第43类(餐饮住宿、养老托儿、动物食宿)
第44类(医疗、美容、园艺)
第45类(安保法律、婚礼家政、社会服务)

编辑时间 2019-07-04
影响力:4651

ssh整合中出现creating bean with name 'transactionManager' defined in class path resource 错误

描述: Errorcreatingbeanwithname'transactionManager'definedinclasspathresource[applicationContext.xml]:Cannotresolvereferencetobean'sessionFactory'whilesettingbeanproperty'sessi... Error creating bean with name 'transactionManager' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]

<bean name="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory" ></property>
</bean>
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" >
<!-- 将连接池注入到sessionFactory, hibernate会通过连接池获得连接 -->
<property name="dataSource" ref="dataSource" ></property>
<!-- 配置hibernate基本信息 -->
<property name="hibernateProperties">
<props>
<!-- 必选配置 -->
<!-- <prop key="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url" >jdbc:mysql:///crm_32</prop>
<prop key="hibernate.connection.username" >root</prop>
<prop key="hibernate.connection.password" >1234</prop> -->
<prop key="hibernate.dialect" >org.hibernate.dialect.MySQLDialect</prop>

<!-- 可选配置 -->
<prop key="hibernate.show_sql" >true</prop>
<prop key="hibernate.format_sql" >true</prop>
<prop key="hibernate.hbm2ddl.auto" >update</prop>
</props>
</property>
<!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 -->
<property name="mappingDirectoryLocations" value="classpath:cn/itcast/domain" ></property>
</bean>
展开
这个解答帮助过3230人

说明你在applicationContext.xml中没有UserDAO,没有依赖注入,或是你注入的名称与你applicationContext.xml中配置的名称不一致,注意在配置文件中是区分大小的。
检查一下有没有<bean id="UserDAO">这样的bean

编辑时间 2019-01-07
影响力:7321

C#如何获得电脑的Mac地址

这个解答帮助过3370人

主要运用到System.Management空间中的ManagementClass类,代码如下:
using System;
using System.Windows.Forms;
using System.Management;
namespace WinLocalinfo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                string strMac = string.Empty;
               ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        strMac = mo["MacAddress"].ToString();
                    }
                }
                moc = null;
                mc = null;
                listBox1.Items.Add(strMac);
            }
            catch
            {
                listBox1.Items.Add("unknown");
            }
        }
    }
}

编辑时间 2019-07-07
影响力:4091

如何获取程序所在磁盘的SID号

这个解答帮助过7986人

private   string[]   GetMoc()
{
string[]   str   =   new   string[2];
ManagementClass   mcCpu   =   new   ManagementClass("win32_Processor");
ManagementObjectCollection   mocCpu   =   mcCpu.GetInstances();
foreach(ManagementObject   m   in   mocCpu)
{
str[0]   =   m["ProcessorId"].ToString();
}

ManagementClass   mcHD   =   new   ManagementClass("win32_logicaldisk");
ManagementObjectCollection   mocHD   =   mcHD.GetInstances();
foreach(ManagementObject   m   in   mocHD)
{
if(m["DeviceID"].ToString()   ==   "C:")
{
str[1]   =   m["VolumeSerialNumber"].ToString();
break;
}
}
return   str;
}
ManagementClass命名空间是System.Management
以上代码用于获取C盘的序列号,而不是硬盘的固有序号.
获取硬盘的固有序号:
using System; 
using System.Runtime.InteropServices; 

namespace ArLi.CommonPrj { 

#region how use this? 
/* 
string sVol = getvol.GetVolOf("C"); 
*/ 
#endregion 

public class getvol{ 

[DllImport("kernel32.dll")] 
private static extern int GetVolumeInformation( 
string lpRootPathName, 
string lpVolumeNameBuffer, 
int nVolumeNameSize, 
ref int lpVolumeSerialNumber, 
int lpMaximumComponentLength, 
int lpFileSystemFlags, 
string lpFileSystemNameBuffer, 
int nFileSystemNameSize 
); 

public static string GetVolOf(string drvID){ 
const int MAX_FILENAME_LEN = 256; 
int retVal = 0; 
int a =0; 
int b =0; 
string str1 = null; 
string str2 = null; 


int i = GetVolumeInformation( 
drvID + @":/", 
str1, 
MAX_FILENAME_LEN, 
ref retVal, 
a, 
b, 
str2, 
MAX_FILENAME_LEN 
); 

return retVal.ToString("x"); 


}

  • 通过逻辑磁盘符号获取物理磁盘号

编辑时间 2019-05-19
影响力:2748

C#如何获取机器唯一标识符

这个解答帮助过1730人

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Management; 
 
namespace Test
{
    /// <summary>
    /// Computer Information
    /// </summary>
    public class Computer
    {
        public string CpuID;
        public string MacAddress;
        public string DiskID;
        public string IpAddress;
        public string LoginUserName;
        public string ComputerName;
        public string SystemType;
        public string TotalPhysicalMemory; //单位:M
        private static Computer _instance;
        public static Computer Instance()
        {
            if (_instance == null)
                _instance = new Computer();
            return _instance;
        }
        protected  Computer()
        {
            CpuID=GetCpuID();
            MacAddress=GetMacAddress();
            DiskID=GetDiskID();
            IpAddress=GetIPAddress();
            LoginUserName=GetUserName();
            SystemType=GetSystemType();
            TotalPhysicalMemory=GetTotalPhysicalMemory();
            ComputerName=GetComputerName();
        }
        string  GetCpuID()
        {
            try
            {
                //获取CPU序列号代码
                string cpuInfo = "";//cpu序列号
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                }
                moc=null;
                mc=null;
                return cpuInfo;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
             
        }
        string  GetMacAddress()
        {
            try
            {
                //获取网卡硬件地址
                string mac="";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                    if((bool)mo["IPEnabled"] == true)
                    {
                        mac=mo["MacAddress"].ToString();
                        break;
                    }
                }
                moc=null;
                mc=null;
                return mac;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
             
        }
        string  GetIPAddress()
        {
            try
            {
                //获取IP地址
                string st="";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                    if((bool)mo["IPEnabled"] == true)
                    {
                        //st=mo["IpAddress"].ToString();
                        System.Array ar;
                        ar=(System.Array)(mo.Properties["IpAddress"].Value);
                        st=ar.GetValue(0).ToString();
                        break;
                    }
                }
                moc=null;
                mc=null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
             
        }
          
        string  GetDiskID()
        {
            try
            {
                //获取硬盘ID
                String HDid="";
                ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                    HDid = (string)mo.Properties["Model"].Value;
                }
                moc=null;
                mc=null;
                return HDid;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
                 
        }
 
        /// <summary>
        /// 操作系统的登录用户名
        /// </summary>
        /// <returns></returns>
        string  GetUserName()
        {
            try
            {
                string st="";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                     
                    st=mo["UserName"].ToString();
                     
                }
                moc=null;
                mc=null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
             
        }
 
 
        /// <summary>
        /// PC类型
        /// </summary>
        /// <returns></returns>
        string  GetSystemType()
        {
            try
            {
                string st="";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                     
                    st=mo["SystemType"].ToString();
                     
                }
                moc=null;
                mc=null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
             
        }
 
        /// <summary>
        /// 物理内存
        /// </summary>
        /// <returns></returns>
        string  GetTotalPhysicalMemory()
        {
            try
            {
                 
                string st="";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach(ManagementObject mo in moc)
                {
                     
                    st=mo["TotalPhysicalMemory"].ToString();
                     
                }
                moc=null;
                mc=null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        string  GetComputerName()
        {
            try
            {                
                return System.Environment.GetEnvironmentVariable("ComputerName");
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }
 
 
    }
}

编辑时间 2019-06-26
影响力:1828

C#中如何得到机器的IP地址

这个解答帮助过8196人

这两个方法是我一直在用的,都可正常获取到IP地址和Mac地址。
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns>IP地址</returns>
public string GetLocalIP()
{
try
{
System.Net.NetworkInformation.NetworkInterface[] nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (System.Net.NetworkInformation.NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet)
{
var mac = adapter.GetPhysicalAddress();
System.Net.NetworkInformation.IPInterfaceProperties ip = adapter.GetIPProperties();
System.Net.NetworkInformation.UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ipadd in ipCollection)
{
if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return ipadd.Address.ToString();
}
}
}
}
}
catch { }
return null;
}
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>本机MAC地址</returns>
public string GetMacAddress()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString().Replace(":", "").Replace("-", "").ToUpper();
break;
}
}
moc = null;
mc = null;
return mac;
}

编辑时间
影响力:5437

C#几种读取MAC地址的方法

这个解答帮助过434人

以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可。
1 通过IPConfig命令读取MAC地址
///<summary>
/// 根据截取ipconfig /all命令的输出流获取网卡Mac
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByIPConfig()
{
List<string> macs =new List<string>();
ProcessStartInfo startInfo = new ProcessStartInfo("ipconfig", "/all");
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
Process p = Process.Start(startInfo);
//截取输出流
StreamReader reader = p.StandardOutput;
string line = reader.ReadLine();

while (!reader.EndOfStream)
{
if (!string.IsNullOrEmpty(line))
{
line = line.Trim();

if (line.StartsWith("Physical Address"))
{
macs.Add(line);
}
}

line = reader.ReadLine();
}

//等待程序执行完退出进程
p.WaitForExit();
p.Close();
reader.Close();

return macs;
}
2 通过WMI读取MAC地址
1)该方法依赖WMI的系统服务,该服务一般不会被关闭;但如果系统服务缺失或者出现问题,该方法无法取得MAC地址。

///<summary>
/// 通过WMI读取系统信息里的网卡MAC
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByWMI()
{
List<string> macs =new List<string>();
try
{
string mac ="";
ManagementClass mc =new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"])
{
mac = mo["MacAddress"].ToString();
macs.Add(mac);
}
}
moc =null;
mc =null;
}
catch
{
}

return macs;
}
3 通过NetworkInterface读取MAC地址
1)如果当前的网卡是禁用状态(硬件处于硬关闭状态),取不到该网卡的MAC地址,(您可以通过禁用网卡进行试验)。
2)如果当前启用了多个网卡,最先返回的地址是最近启用的网络连接的信息

//返回描述本地计算机上的网络接口的对象(网络接口也称为网络适配器)。
publicstatic NetworkInterface[] NetCardInfo()
{
return NetworkInterface.GetAllNetworkInterfaces();
}

///<summary>
/// 通过NetworkInterface读取网卡Mac
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByNetworkInterface()
{
List<string> macs =new List<string>();
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
macs.Add(ni.GetPhysicalAddress().ToString());
}
return macs;
}
4 通过SendARP读取MAC地址
///<summary>
/// 通过SendARP获取网卡Mac
/// 网络被禁用或未接入网络(如没插网线)时此方法失灵
///</summary>
///<param name="remoteIP"></param>
///<returns></returns>
publicstaticstring GetMacBySendARP(string remoteIP)
{
StringBuilder macAddress =new StringBuilder();

try
{
Int32 remote = inet_addr(remoteIP);

Int64 macInfo =new Int64();
Int32 length =6;
SendARP(remote, 0, ref macInfo, ref length);

string temp = Convert.ToString(macInfo, 16).PadLeft(12, '0').ToUpper();

int x =12;
for (int i =0; i <6; i++)
{
if (i ==5)
{
macAddress.Append(temp.Substring(x -2, 2));
}
else
{
macAddress.Append(temp.Substring(x -2, 2) +"-");
}
x -=2;
}

return macAddress.ToString();
}
catch
{
return macAddress.ToString();
}
}

[DllImport("Iphlpapi.dll")]
privatestaticexternint SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
[DllImport("Ws2_32.dll")]
privatestaticextern Int32 inet_addr(string ip);
5 从注册表读取MAC地址
常规用户可通过读取注册表项Windows Genuine Advantage获取到物理网卡地址。
1)如果注册表项被修改,则无法取得该MAC地址

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Genuine Advantage

编辑时间
影响力:474

{急} C# winform Tag 属性需要添加什么using指令集之类的吗?

描述: 如下图,不知道为什么会这样... 如下图,不知道为什么会这样

这个解答帮助过7962人

不需要的,tag属性都是默认的。

编辑时间 2019-03-12
影响力:2558

C#代码怎么获取Win10系统的账户名,不是用

这个解答帮助过2392人

代码给你吧
string name = Environment.UserName;
string fullname;
ManagementClass account = new ManagementClass("Win32_UserAccount");
ManagementObjectCollection acc = account.GetInstances();
foreach (ManagementObject obj in acc)
{
if (obj.Properties["Name"].Value.ToString() == name)
{
fullname = obj.Properties["FullName"].Value.ToString();
}
}

编辑时间 2019-07-09