Возвращайте серийный номер только с диска C или загрузочного диска в C#
Привет,
Я закодировал некоторый код, чтобы вернуть первые четыре серийных номера, символы из процессора, жесткого диска и материнской платы. Это хорошо работает.
Мне нужен какой-то код, который возвращает только серийный номер с диска с надписью "C:\" или загрузочного диска. В настоящее время, если я запускаю код, он возвращает последовательный номер с первого диска, но когда я подключаю внешний жесткий диск USB, он возвращает этот последовательный номер.
Есть идеи?
с уважением
Д
Что я уже пробовал:
private static async Task<string> GenerateUniqeID() { byte[] bytes; byte[] hashedBytes; StringBuilder sb = new StringBuilder(); Task task = Task.Run(() => { ManagementObjectSearcher cpu = new ManagementObjectSearcher("Select * from Win32_Processor"); ManagementObjectCollection cpu_Collection = cpu.Get(); foreach (ManagementObject obj in cpu_Collection) { sb.Append(obj["ProcessorID"].ToString().Trim().Substring(0, 4)); break; } ManagementObjectSearcher hdd = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); ManagementObjectCollection hdd_Collection = hdd.Get(); foreach (ManagementObject obj in hdd_Collection) { sb.Append(obj["SerialNumber"].ToString().Trim().Substring(0, 4)); break; } ManagementObjectSearcher mbo = new ManagementObjectSearcher("Select * from Win32_BaseBoard"); ManagementObjectCollection mbo_Collection = mbo.Get(); foreach (ManagementObject obj in mbo_Collection) { sb.Append(obj["SerialNumber"].ToString().Trim().Substring(0, 4)); break; } }); Task.WaitAll(task); return await Task.FromResult(sb.ToString()); }
Maciej Los
Совет: что делает break
инструкция есть?
Member 14871639
Привет Мацей,
Он останавливается после первого найденного. Таким образом, если есть четыре жестких диска, он остановится после первого.
Maciej Los
Знаете ли вы теперь, почему вы получаете только USB-накопитель?