Не удается получить подпись жесткого диска из Windows 10 в приложении C#. Но почему?

Большинство настольных компьютеров работают с этим отлично, но когда оно запускается на недавно настроенном рабочем столе, таком как клонированный компьютер 7-го поколения, все приложение закрывается с ошибкой, в которой говорится, что оно не может прочитать жесткий диск. Но почему? Я использую .net 4.5.

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");

foreach (ManagementObject wmi_HD in searcher.Get())
{
   string SerialNo = wmi_HD.GetPropertyValue("Signature").ToString();

   if (SerialNo == "0" || SerialNo == "" || SerialNo == null)
   {
   }
   else
   {
      hdCollection.Add(SerialNo);
   }
}

person mujibsani    schedule 28.01.2018    source источник
comment
Укажите точную ошибку, которую вы получили.   -  person Jony Adamit    schedule 28.01.2018
comment
Пожалуйста, проверьте этот ответ: stackoverflow.com/questions/4084402/ получить серийный номер жесткого диска. Он довольно старый, но ответ говорит, что серийный номер исходит от Win32_PhysicalMedia, а не от Win32_DiskDrive.   -  person felbus    schedule 28.01.2018
comment
Нет никакой ошибки. если бы я использовал эту строку кодов в своем проекте. он работает на каждом рабочем столе, без которого создаются рабочие столы с новой конфигурацией. моя команда протестировала более 5000 рабочих столов. Рабочий стол на базе 4-го, 5-го, 6-го поколения работает отлично. но когда вы пытаетесь запустить новое 7-е поколение, настроенное на Windows 10, приложения автоматически закрываются. это проблема.   -  person mujibsani    schedule 28.01.2018
comment
Вы пробовали то, что предложил @felbus?   -  person Jony Adamit    schedule 04.02.2018
comment
Я пытаюсь получить подпись, а не серийный номер. номер подписи получить только из Win32_DiskDrive. @ДжониАдамит   -  person mujibsani    schedule 05.02.2018


Ответы (1)


Вы можете написать резервный механизм для извлечения подписи из реестра.
Он находится в папке HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices. Первые 4 байта в значениях данных являются подписью.

person Jony Adamit    schedule 05.02.2018
comment
Спасибо большое за помощь. наконец-то я получил от вас хороший совет. Большое спасибо. - person mujibsani; 11.02.2018