Цель: мне нужно получить UID (уникальный идентификатор) смарт-карты HID, используя считыватель смарт-карт HID Omnikey. К сожалению, я не могу понять, как это сделать, используя PCSC (pcsc-sharp.dll). Таким образом, я искал альтернативу, и я нашел cardwerk.
Я новичок в.NET, и я тестирую код образца смарт-карты, который нашел оценочную версию dll smartcard.
ArrayList m_vsReaderNames = new ArrayList();
private void InitializeSmartCardSystem()
{
if (m_aCardResourceManager == null)
{
m_aCardResourceManager = new SCardResourceManager();
if (!m_aCardResourceManager.EstablishContext(SCardContextScope.User))
{
MessageBox.Show("SCardResourceManager.EstablishContext failed!");
Application.Exit();
}
m_aCardResourceManager.ListReaders(m_vsReaderNames);
if (m_vsReaderNames.Count == 0)
{
MessageBox.Show("SCardResourceManager.ListReaders did not find any card readers!");
Application.Exit();
}
}
}
Это m_aCardResourceManager.ListReaders(m_vsReaderNames); часть получает следующую информацию о смарт-карте.
[0] "H" object {string}
[1] "I" object {string}
[2] "D" object {string}
[3] " " object {string}
[4] "O" object {string}
[5] "M" object {string}
[6] "N" object {string}
[7] "I" object {string}
[8] "K" object {string}
[9] "E" object {string}
[10]"Y" object {string}
[11]" " object {string}
[12]"5" object {string}
Поскольку indexID отсутствует из переменной m_vsReaderNames в указанном выше коде, я столкнулся с ошибкой, указав, что индекс был за пределами массива.
Кроме того, вместо значений arraylist я хотел бы иметь строковое значение, равное "HID OMNIKEY 5", которое будет отображаться в комбинированном поле, показанном в прикрепленном файле.!
для полного кода примера см. http://smartcard-api.com/download.shtml.
Я не совсем уверен, что вы спрашиваете. Похоже, вы хотите объединить эти значения в строку? Здесь вы можете это сделать.
var myString = string.Join("", m_vsReaderNames);
//myString now holds: "HID OMNIKEY 5"