FindPrivateKey под Windows 7 64 бит не работает - PullRequest
0 голосов
/ 23 февраля 2011

Я скачал .net образец FindPrivateKey, скомпилированный для framework 4.0, пробовал для разных платформ (32-битная, 64-битная, любой процессор), но он не работал.Всегда одна и та же ошибка: порядковый номер 345 не может быть расположен в библиотеке динамических ссылок comctl32.dll.Я использую Windows 7 Enterprise, 64-битную версию.Вызов этого метода завершается ошибкой: match = X509Certificate2UI.SelectFromCollection (store.Certificates, «Выбрать сертификат», «Выберите сертификат, чтобы найти местоположение соответствующего файла закрытого ключа:», X509SelectionFlag.SingleSelection);В чем здесь может быть проблема?

Александар

1 Ответ

1 голос
/ 22 апреля 2011

Этим утром я столкнулся с той же проблемой (не удалось найти порядковый номер 345 ...) ... Я пробовал приложение на 3 разных ПК с Win7 64bit; но только в одном из них бросает исключение. Я обнаружил, что проблема была в использовании библиотеки comctl32.dll (которая отличалась от моей).

Вы можете выполнить этот фрагмент кода, чтобы проверить, какую версию библиотеки вы используете:

foreach (ProcessModule module in System.Diagnostics.Process.GetCurrentProcess().Modules)
            if (module.ModuleName.ToLower() == "comctl32.dll")
                MessageBox.Show(module.FileVersionInfo.ToString());

Затем добавьте манифест и заставьте приложение использовать определенную версию библиотеки: [Проект] -> Добавить новый элемент -> Манифест приложения И отредактируйте его, добавив следующую часть зависимостей.

Я надеюсь, что это работает для вас ...

    <?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>

… 
… 
…

  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</asmv1:assembly>
...