Мне нужно прочитать серийный номер тома C# (тот, который указан при вводе dir в командной строке cmd). Это всегда работало, но сегодня это происходит крайне медленно.
[01.07.2024 12:54:35.415] Я GetHdSerialString START
[01.07.2024 12:55:41.936] Я GetHdSerialString END
так что мне нужно больше одной минуты, чтобы получить это.
Процедура следующая
public static string GetHdSerialString()
{
try
{
WriteNLog("GetHdSerialString START ", eLogLevel.Info);
using ManagementClass mangnmt = new ManagementClass("Win32_LogicalDisk");
using ManagementObjectCollection mcol = mangnmt.GetInstances();
string result = "";
foreach (ManagementObject strt in mcol.Cast<ManagementObject>())
{
result += Convert.ToString(strt["VolumeSerialNumber"]);
break; //mi interessa solo il primo
}
result = result.Insert(4, "-");
WriteNLog("GetHdSerialString END ", eLogLevel.Info);
return result;
}
catch (Exception exc)
{
WriteNLog("GetHdSerialString exc:" + exc.Message, eLogLevel.Error);
return String.Empty;
}
}
Вот момент, когда это занимает так много времени
Может кто-нибудь сказать мне, почему вдруг это занимает так много времени и как это исправить?
Я также пробовал другие способы получения этих данных, но не смог их найти. Спасибо Патрик
Большое вам спасибо за вашу помощь. Я пробовал некоторые причины, связанные с аппаратным обеспечением или драйверами, но это не тот случай. Вот я и подумал об антивирусе и без него всё получилось! Не знаю, почему антивирус мешает управлению аппаратным обеспечением, но на самом деле без него запуск происходит немедленно, а с ним это занимает много времени. Так что спасибо тебе! Возможно, вы захотите оставить свой комментарий в качестве ответа, потому что вы наставите меня на правильный путь.
Если вы нашли решение, вы можете ответить на свой вопрос :)
На самом деле пользователь «Good Night Nerd Pride» направил меня на правильный путь. Как написано в комментарии выше, я пробовал некоторые причины, связанные с аппаратным обеспечением или драйверами, но это не тот случай. Вот я и подумал об антивирусе и без него всё получилось! Не знаю, почему антивирус мешает управлению аппаратным обеспечением, но на самом деле без него запуск происходит немедленно, а с ним это занимает много времени.
Я не могу это воспроизвести. Я попробовал пакет nuget
System.Management
с версиями8.0.0
и9.0.0-preview.5.24306.7
. Оба раза ваша функция завершилась в течение секунды или около того. Итак, я думаю, это не проблема библиотеки, а, может быть, что-то связано с оборудованием/ОС/драйвером?