Получите ID ICC SIM через командную строку в Windows 11

Вопрос или проблема

На Windows 10 приведённая ниже команда работает идеально:

netsh mbn show read interface = *

Эта команда отображает детали текущей SIM-карты в планшетах; состояние, аварийный режим (включен или выключен), идентификатор подписчика, ICC идентификатор SIM и количество телефонных номеров.

В целях этого вопроса предположим, что всегда присутствует только 1 SIM-карта и никогда больше — я не уверен, приведёт ли установка нескольких SIM-карт к тому, что будут перечислены детали всех SIM.

Нам необходимо знать только ICC идентификатор SIM.

Вышеуказанная команда была протестирована на нескольких планшетах Lenovo D330 и Lenovo Duet i3 с Windows 10, и она работает безупречно — с некоторыми дополнительными параметрами ICC идентификатор может быть извлечён автоматически, что нам и нужно сделать.

Однако на тех же моделях планшетов, работающих на Windows 11, результат этой команды таков:

Не удалось получить доступ к интерфейсу: ошибка 0x32.

Каждое устройство, работающие на Windows 11, выдает ту же ошибку.

Есть ли причина, по которой эта команда не работает на Windows 11? Или, возможно, настройка, которую я пропустил и которую нужно включить/выключить, чтобы она работала?

Существует ли альтернативный способ получить ICC идентификатор через командную строку?

Драйвер LTE переустановлен дважды, опция Cellular определенно включена, SIM-карта определенно присутствует и функционирует, все детали, которые я ищу, можно найти в Настройки > Сеть & Интернет > Мобильная сеть > Настройки оператора > Свойства; просто эта команда не показывает те же результаты на Win11, как на Win10.

Конечная цель — иметь возможность получать ICC идентификатор из приложения C#, именно поэтому это должно быть через командную строку, а не через интерфейс Windows.

Не знаю, почему я не подумал об этом раньше, но я, похоже, могу получить именно то, что мне нужно из реестра. Я использовал функцию “Поиск” в редакторе реестра и искал ICC SIM, который я получил из интерфейса Windows. После нескольких потенциальных ключей я наткнулся на один, который, похоже, перечисляет только ICC идентификатор текущей SIM-карты.

В Computer\HKLM\SOFTWARE\Microsoft\Multivariant\UI\Candidates\UICC\ есть единственный подкласс, названный по имени ICC SIM. Я могу прочитать ключ Candidates и получить подклассы, что возвращает имя одного присутствующего подкласса, и это ICC SIM. Если я заменю SIM-карту на другую и выполню ту же функцию, я получаю ICC новой SIM-карты и никаких других подклассов, показывая, что старая запись была удалена / переименована.

Теперь протестировано на планшетах Win10 и Win11 и работает на обоих.

Мне было бы очень интересно узнать, почему команда NETSH возвращает ошибку.

Ответ или решение

Получение ICC ID SIM-карты через командную строку в Windows 11

Введение

Пользователи Windows 10 успешно использовали команду netsh mbn show read interface=* для получения данных о SIM-картах, включая ICC ID, однако эта команда выдает ошибку в Windows 11. В данном ответе мы проанализируем причины данной проблемы и предложим альтернативные методы извлечения ICC ID для более эффективного решения вашей задачи.

Причины ошибки

Ошибки, подобные "Failed to access the interface: error 0x32", возникают по различным причинам. Одна из возможных причин заключается в изменении архитектуры взаимодействия с сетевыми интерфейсами в Windows 11. Майкрософт может ограничить доступ к определенным функциям командной строки для улучшения безопасности и интеграции с новыми системами. Особенно если учесть, что Windows 11 акцентирует внимание на облачных технологиях и пользовательском опыте.

Также возможен сбой в драйверах или их несовместимость с новым операционным окружением. Убедитесь, что вы используете самые последние версии драйверов для LTE и обновления системы.

Альтернативные методы получения ICC ID

Если команда netsh не работает, вы можете использовать другой способ — извлечение данных из реестра Windows. Это может служить надежным методом для получения ICC ID, поскольку он не зависит от состояния сетевых интерфейсов.

Шаги для получения ICC ID из реестра:
  1. Открытие редактора реестра:

    • Нажмите Win + R, введите regedit и нажмите Enter.
  2. Навигация к соответствующему ключу:

    • Перейдите к следующему пути в реестре:
      Computer\HKLM\SOFTWARE\Microsoft\Multivariant\UI\Candidates\UICC\
  3. Поиск ICC ID:

    • В данной ветке будет подкаталог, названный по ICC ID вашей SIM-карты. Вы можете просмотреть содержимое этого ключа и получить необходимую информацию.
  4. Автоматизация процесса с помощью командной строки:

    • Вы можете воспользоваться командой reg query для получения ICC ID через командную строку. Например:
      reg query "HKLM\SOFTWARE\Microsoft\Multivariant\UI\Candidates\UICC"
Пример C# приложения

Теперь, когда вы знаете, как получить ICC ID через реестр, можно интегрировать этот процесс в ваше C# приложение. Вот пример кода, который делает это:

using Microsoft.Win32;

public static string GetSimIccId()
{
    string iccId = string.Empty;
    try
    {
        using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Multivariant\UI\Candidates\UICC"))
        {
            if (key != null)
            {
                string[] subKeyNames = key.GetSubKeyNames();
                if (subKeyNames.Length > 0)
                {
                    iccId = subKeyNames[0]; // ICC ID - это имя подкаталога
                }
            }
        }
    }
    catch (Exception ex)
    {
        // Обработка ошибок
        Console.WriteLine($"Ошибка: {ex.Message}");
    }
    return iccId;
}

Заключение

Хотя использование команды netsh mbn в Windows 10 дало доступ к ICC ID, изменения в Windows 11 требуют адаптации подходов к извлечению данных. Использование реестра предоставляет надежное решение, работающее как на Windows 10, так и на Windows 11. Убедитесь, что вы работаете с обновленными драйверами и операционной системой для минимизации возможных конфликтов.

Данный метод не только упрощает процесс, но и интегрируется непосредственно в приложение на C#, что делает его идеальным решением для вашей задачи. Если у вас есть дополнительные вопросы или требуется помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...