Каков рекомендуемый способ получения winhttp.h?

Наше приложение использует libcurl для HTTP, и мы хотим получить доступ к настройкам прокси-сервера Internet Explorer. В более раннем вопросе о переполнении стека рекомендуется использовать WinHttpGetIEProxyConfigForCurrentUser и WinHttpGetProxyForUrl.

К сожалению, заголовок winhttp.h не включен в наши копии ни Visual C++ 2005, ни Visual Studio 2008. По-видимому, можно загрузить обновленный Platform SDK и установить его в Visual C++ 2005, но это довольно болезненный процесс, и он не обязательно работает с более новые версии Visual Studio.

Есть ли хороший, хорошо поддерживаемый способ доступа к API-интерфейсам WinHTTP 5.1 из C++? Или нам следует избегать использования этих API?


person emk    schedule 15.04.2009    source источник


Ответы (3)


Лучший, хорошо поддерживаемый способ доступа к API-интерфейсам WinHTTP 5.1 из C++ — это Windows SDK (новое название для Platform SDK) и использование упомянутых вами API-интерфейсов.

Статья, на которую вы ссылаетесь, предполагает, что установка SDK сложна - хорошая новость в том, что это старая статья 2006 года, и в наши дни все намного проще. Просто сделайте следующее:

  1. Загрузите последний ISO-образ SDK с здесь — не беспокойтесь о том, что его называют «SDK для Windows Server 2008», это также для Server 2003, XP и Vista.
  2. Записать на DVD
  3. Запустите setup.exe на DVD, выберите полную установку и дайте ей поработать в течение 1/2 часа или около того.
  4. После установки выберите «Пуск» -> «Программы» -> Microsoft Windows SDK -> «Регистрация Visual Studio» -> Интеграция Windows SDK с Visual Studio 2005.

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

После этого компилятор Visual C++ сможет найти файлы winhttp.h и winhttp.lib в соответствующих папках.

Обновление Как обычно, все не так просто, как должно быть. EMK указал, что средство настройки Windows SDK не работает должным образом с Visual Studio 2008 (любой версии) и аварийно завершает работу после установки Visual Studio 2008 SP1. Подробности и обходные пути сообщаются здесь. и здесь< /а>.

person snowcrash09    schedule 15.04.2009
comment
Спасибо! Действительно ли необходима полная установка, или мы можем обойтись установкой только (например) соответствующих частей C++? - person emk; 15.04.2009
comment
Я забыл, какие есть варианты - вы, вероятно, можете обойтись только заголовками и библиотеками Win32. Тем не менее, я обычно устанавливаю абсолютно все, так как место на диске дешевое, но, предположительно, ваше время (чтобы выяснить, какие компоненты вам нужны) — нет. - person snowcrash09; 15.04.2009
comment
Справедливо! Нам нужно установить его на множество машин, поэтому я подумал, что, возможно, стоит выяснить, какие компоненты нам действительно нужны. Спасибо за совет! - person emk; 15.04.2009
comment
Чтобы это работало, см.: social.msdn.microsoft.com/forums/en-US/windowssdk/thread/ и social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/ . Не могли бы вы дать ссылку на эти страницы в своем ответе? - person emk; 15.04.2009
comment
Спасибо за ссылки! Принятый. - person emk; 16.04.2009
comment
Ссылки EMK помогли мне, когда я в настоящее время в эпоху Visual Studio 2015 должен был вернуться и создать что-то с vc8, которое ссылается на winhttp.lib. Сначала отредактируйте реестр, чтобы исправить неверные записи, а затем запустите инструмент настройки, чтобы настроить vs2005 и vs2008 на использование 6.0a SDK. - person ehambright; 24.10.2016

На случай, если кто-то наткнется на этот пост и заинтересуется минимальными компонентами, которые можно установить для получения winhttp, установка Microsoft Windows Core SDK > Build Environment > Build Environment (x86 32-bit) сработала для меня.

person Susam Pal    schedule 14.04.2010

Вам совершенно не нужен весь SDK. Просто загрузите нужную часть, см. MSDN для выбора.

person Community    schedule 15.04.2009
comment
Я согласен, что вам не нужно все это, но для многих людей поиск нужной части обходится дороже, чем просто установка всего этого. - person snowcrash09; 16.04.2009