给个思路啊,C#不是可以取到当前程序所在的路径吗? 如:获取和设置当前目录的完全限定路径。 string str = System.Environment.CurrentDirectory; 然后根据这个与我上面贴出来的代码获取到的所有信息比较,得到当前磁盘的信息
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"); } } }
110,571
社区成员
642,565
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧