Я пишу библиотеку классов, которая требует от меня использования WinHttpOpen
через Interop.
Подпись функции выглядит следующим образом
WINHTTPAPI HINTERNET WinHttpOpen(
LPCWSTR pszAgentW,
DWORD dwAccessType,
LPCWSTR pszProxyW,
LPCWSTR pszProxyBypassW,
DWORD dwFlags
);
В документации четко указано, что для параметра dwAccessType
.
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
Внимание! Использование этой опции не рекомендуется в Windows 8.1 и
новее. Вместо этого используйте WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY.
Так что я могу использовать WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
до Windows 8.1
WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY
Используются системные настройки и настройки прокси-сервера для каждого пользователя (включая Интернет).
Конфигурация прокси-сервера Explorer), чтобы определить, какие прокси / прокси использовать.
Автоматически пытается обработать аварийное переключение между несколькими прокси,
различные конфигурации прокси для интерфейса и аутентификации.
Поддерживается в Windows 8.1 и новее.
и WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY
начиная с Windows 8.1
Проблема в том, что моя библиотека классов должна работать в каждой версии Windows, начиная с 7 SP1.
Я пытался проверить версию Windows, используя Environment.OSVersion
, но получаю неправильную версию, потому что:
Свойство OSVersion сообщает об одном и том же номере версии (6.2.0.0) для Windows 8 и Windows 8.1 и об одном и том же номере основной и вспомогательной версии для Windows 10.
Чтобы это исправить, мне нужно добавить файл манифеста приложения во все приложения, которые используют мою библиотеку (насколько я понимаю, нет способа создать файл манифеста приложения из библиотеки классов)
Как узнать, какое значение я должен использовать для dwAccessType
, чтобы мое приложение работало как на Windows 7, так и на 10?