Как открыть свойства сетевого адаптера через Windows API?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как открыть свойства сетевого адаптера через Windows API?

Сообщение Anonymous »

Я создаю собственный мастер подключения к WLAN, вдохновленный Windows XP/Server 2003. На его боковой панели есть опция «Изменить дополнительные настройки» (скриншот сделан из системного мастера WLAN, а не моего), который открывает свойства адаптера. То же самое происходит с ncpa.cpl в Windows Vista и более поздних версиях, когда в меню, появляющемся при нажатии ПКМ на сетевом адаптере, нажимается «Свойства». Это целевое поведение.
Я пробовал копаться в документации Microsoft Learn, связанной с интерфейсами COM-интерфейсов конфигурации сети, и наиболее близким совпадением был INetCfgComponent::RaisePropertyUi, но это открывает определенные настройки компонента сети, что является ошибкой — они на один уровень глубже, чем требуется. Именно это и делает код из неотвеченного вопроса 15901907.
Затем я решил поискать недокументированные интерфейсы Windows и наткнулся на GUID {C08956A4-1CD3-11D1-B1C5-00805FC1270E известный как INetConnectionPropertyUi, который отсутствует в реестре в кусте HKCR, но доступен через CoCreateInstance. Я думал, что это будет успешным с помощью следующего кода (полный файл можно увидеть здесь):

Код: Выделить всё

hr = pNetCCPui->AddPages(NULL, PropSheetExCallback, reinterpret_cast(&pinfo));
if (SUCCEEDED(hr))
{
if (PropertySheetW(&pinfo) < 0)
hr = E_FAIL;
}
Но я немедленно вылетаю с 0xC0000005 (нарушение прав доступа) при вызове PropertySheetW. Желаемый лист свойств появляется во время сбоя, но совершенно пустой.
Сегодня у меня возникла идея получить желаемое окно через ShellExecute, думая, что оно доступно через определенный CLSID. Я был недалеко от целевого поведения — я добрался по крайней мере до окна состояния адаптера, но опять же промах — на этот раз на один уровень мелкий, чем требовалось:

Код: Выделить всё

shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}\{network adapter GUID}
Я нашел этот подход через оставшийся без ответа (?) вопрос 78393276 и недавно перемещенный вопрос 1840801 на странице Superuser.

Я ищите способы открытия диалогового окна свойств адаптера, которые не являются:
  • симуляцией действий пользователя, поскольку они могут быть потенциально видимыми и мешать работе (например, AHK или SendMessageW) )
  • переписывание почти половины netshell.dll в собственную dll, чтобы включить диалоговое окно свойств адаптера.
Какого рода решение будет работать:

[*]взаимодействие с COM, может быть, я пропустил интерфейс, который действительно работает?
[*]

Код: Выделить всё

ShellExecute
, который продолжит указанную выше цепочку GUID до нужного диалога.
[*]все, что не включает в себя ncpa.cpl.


Подробнее здесь: https://stackoverflow.com/questions/784 ... indows-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Драйвер виртуального сетевого адаптера с API, желательно с C# API
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • C# - надежно резервное копирование и восстановление полного сетевого адаптера Windows DNS/DOH
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как получить статус соединения и скорость сетевого адаптера, на котором установлен драйвер rtnet
    Anonymous » » в форуме Linux
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Нужна помощь в добавлении сетевого адаптера USB в VirtualBox или VMware Kali Linux VM
    Anonymous » » в форуме Linux
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • От физического сетевого устройства до логического сетевого устройства
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»