|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
.NET 4.x Единый для всех версий Windows (от 5.1 и выше), способ для вкл\выкл сетевого адаптера23.09.2013, 21:09. Показов 10050. Ответов 22
Сабж. Нужен способ отключение и включения адаптера который бы работал на всех виндовсах...
Перепробовал уже столько утилит и способов что моск счас взорвется, и ни один способ не работает на WinXP, WinVista и Win7... Помогите пожалуйста может быть кто не будь знает как это нормально реализовать... Добавлено через 11 часов 22 минуты неужели нету способа?( Добавлено через 5 часов 6 минут Во общем наверно придётся реализововать два разных способа отключения адаптеров для WinXP и для WinVista\Win7... В связи с этим ищу адекватный, и 100% работающий способ отключения девайса по ID\GUID\Name\PNPDeviceID для 'WinXP'.
0
|
|
| 23.09.2013, 21:09 | |
|
Ответы с готовыми решениями:
22
API Windows для вкл/выкл. BT, WIFI, увеличения и уменьшения яркости экрана Вкл/выкл inserta для RichEdit Как задать единый размер для всех папок в Windows XP? |
|
292 / 291 / 108
Регистрация: 04.09.2010
Сообщений: 638
|
||||||
| 24.09.2013, 13:05 | ||||||
|
DevCon
Я использовал так:
1
|
||||||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 24.09.2013, 17:39 [ТС] | |
|
О этой утилите читал уже, но у меня на Win7 x64 не работает... Плюс он рубит не подключение а Девайс, и рубит по PNPDeviceID, и если у девайсов похожие 'PNPDeviceID'(На пример на VMWare) то упадут все адаптеры, а вместе с ними и подключения на них, с похожим 'PNPDeviceID'...
Ну а так то нашёл хороший скрипт написаный на VB, сейчас пробую переделать эго под c#... Работаетон через Shell32. Пробовал уже такой же скрипт переписаный на c# - не работает ничерта чё то... Так что счас буду как то пробовать вызывать этот VB скрипт из-под c# кода... з.ы. Ну эти танцы мне нужно чисто для WinXP... Ибо по MSDN'у, виндовсы, выше 6.0 поддерживают методы 'Enable()', 'Disable()' в WMI, так что лучше, думаю, использовать их...
0
|
|
|
Ушел с форума
|
||
| 24.09.2013, 17:47 | ||
|
затем вызвать SetupDiCallClassInstaller с кодом DIF_PROPERTYCHANGE и DICS_ENABLE/DICS_DISABLE.
2
|
||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
||||||||||||
| 24.09.2013, 18:10 [ТС] | ||||||||||||
Возможно я что то не так делал или не нужно делать всё это, посмотрите на эту либу и скажите что там и как нужно именно зделать что б работало. Вызывал вот так:
0
|
||||||||||||
|
Ушел с форума
|
|
| 24.09.2013, 18:14 | |
|
1
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 24.09.2013, 18:23 [ТС] | |
|
Ну на пример вот такой вот с первой карты:
"{88EECAC4-1DC0-49F6-872C-EA2C84CF8F2F}"
0
|
|
|
Ушел с форума
|
|
| 24.09.2013, 18:30 | |
|
Искать устройства нужно по GUID-ам из категории Device Setup Classes или Device Interfaces:
System-Defined Device Setup Classes Available to Vendors System-Defined Device Interface Classes
2
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 24.09.2013, 18:57 [ТС] | |
|
Ну теперь на Win7 работает нормально, только на WinXP по прежнему не работает ((
0
|
|
|
Ушел с форума
|
|
| 24.09.2013, 19:01 | |
|
А что происходит на XP ?
Покажите GUID, который Вы используете.
0
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 24.09.2013, 21:16 [ТС] | |
|
Ну на Win7 использую и работает нормально:
Network Adapter Class = Net ClassGuid = {4d36e972-e325-11ce-bfc1-08002be10318} А на XP происходит - ничего... ни ошибки ничего не вылазит, просто не работает и всё... Добавлено через 9 минут +В качестве 'string instanceId' передаю 'PNPDeviceID' например "PCI\VEN_1022&DEV_2000&SUBSYS_20001022&R EV_10\4&47B7341&0&0888" Добавлено через 2 часа 0 минут Во общем ID адаптера определяется нормально, значит трабла в методе 'EnableDevice()', сейчас буду шаманить, может кто вкурсе почему на Win7 работает этот метод а на WinXP нет?
0
|
|
|
Ушел с форума
|
|
| 24.09.2013, 21:18 | |
|
0
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 24.09.2013, 21:56 [ТС] | |
|
Буду очень сильно благодарен за любую помощь в решении этой траблы на WinXP...
p.s. 'SetupDiSetClassInstallParams()' и 'SetupDiCallClassInstaller()' в методе 'EnableDevice()'' оба возвращают 'true'. Но почему не меняют я понять не могу...
0
|
|
|
Ушел с форума
|
||||||
| 25.09.2013, 00:33 | ||||||
|
{4d36e972-e325-11ce-bfc1-08002be10318} - это GUID_DEVINTERFACE_NET,
этот интерфейс поддерживается, начиная с Windows Server 2003 и Windows Vista. На Windows XP его нет, там нужно использовать GUID_NDIS_LAN_CLASS:
2
|
||||||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 25.09.2013, 00:53 [ТС] | |
|
Это просто замечательно!!!! Но куда именно мне, в моей библиотеке, этот код сувать скажите ещё?
Извеняйте за нубство, всего 2недели назад начал c# учить....
0
|
|
|
Ушел с форума
|
||
| 25.09.2013, 01:03 | ||
|
Попробуйте вот этот GUID - {AD498944-762F-11D0-8DCB-00C04FC3358C} Это GUID_NDIS_LAN_CLASS (это device interface), у меня с ним на XP все работает. Не по теме:
2
|
||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 25.09.2013, 01:15 [ТС] | |
|
Нет, с этим не работает(( Даже не определяется индекс... То есть в этом классе мои адаптеры не находит...
Добавлено через 9 минут Вот в "{4d36e972-e325-11ce-bfc1-08002be10318}" ищет всё нормально что на Win7 что на WinXP, только на семёрке отключает а на XP почему-то нет... Гляньте метод 'EnableDevice()' в этой библиотеке, проблема почему-то именно там... Кстати какой вы метод используете для получения девайсов с класса '{AD498944-762F-11D0-8DCB-00C04FC3358C}'?
0
|
|
|
Ушел с форума
|
||||||
| 25.09.2013, 11:07 | ||||||
|
Любые устройства можно искать по двум критериям - setup class и interface class.
Разница между этими понятиями очень зыбкая. Если упрощенно, setup class - это категория установки, к которой относится устройство, например USB, а interface class - это интерфейс, который поддерживается устройством, например клавиатура. Конкретно сетевые адаптеры можно искать по:
interface class там нужно использовать GUID_NDIS_LAN_CLASS. Общий принцип поиска устройств таков: 1) Вызываем SetupDiGetClassDevs, передавая ей GUID нужного setup class или interface class. Если ищется device interface class, нужно передать флаг DIGCF_DEVICEINTERFACE (0x10). 2) Найденный набор устройств (device information set) перебирается функцией SetupDiEnumDeviceInfo, увеличивая индекс перечисления на каждом шаге. Когда все найденные устройства будут перечислены, функция вернет ошибку, а GetLastError будет равен ERROR_NO_MORE_ITEMS (259). 3) Отличить одно устройство от другого можно по различным свойствам, запрашиваемым через такие функции, как SetupDiGetDeviceRegistryProperty. Например, можно запрашивать имя устройства, как оно отображается в диспетчере оборудования, его hardware id и instance id, а также получать разнообразную информацию об установленных для него драйверах. Уникальным является только instance id, так как он связан с путем в реестре, где хранится информация о данном устройстве, остальные параметры могут совпадать. Например, если воткнуть две сетевые карты одной модели, у них будут практически идентичные параметры. Включение и выключение устройства осуществляется с помощью функции SetupDiCallClassInstaller, вызванной с кодом DIF_PROPERTYCHANGE (0x12). Перед вызовом нужно заполнить структуру SP_PROPCHANGE_PARAMS следующим образом: ClassInstallHeader.cbSize = sizeof (ClassInstallHeader); ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE (0x12); StateChange = DICS_ENABLE (0x1) или DICS_DISABLE (0x2); Scope = DICS_FLAG_GLOBAL (0x1) или DICS_FLAG_CONFIGSPECIFIC (0x2); HwProfile = 0; И передать ее в функцию SetupDiSetClassInstallParams. SetupDiCallClassInstaller нужно вызвать два раза, первый раз состояние устройства меняется для глобальной конфигурации (DICS_FLAG_GLOBAL), второй для конфигурации текущего профиля (DICS_FLAG_CONFIGSPECIFIC). То есть, получается такая последовательность действий: - заполняем структуру SP_PROPCHANGE_PARAMS с флагом DICS_FLAG_GLOBAL; - вызываем SetupDiSetClassInstallParams; - вызываем SetupDiCallClassInstaller; - снова заполняем структуру SP_PROPCHANGE_PARAMS, на этот раз с флагом DICS_FLAG_CONFIGSPECIFIC; - снова вызываем SetupDiSetClassInstallParams; - и напоследок опять вызываем SetupDiCallClassInstaller. Данный способ должен работать на любых системах от Windows XP и выше. Да, еще такие детали: - для изменения состояния устройств нужны полные права администратора; - разрядность программы должна совпадать с разрядностью операционной системы, иначе будет ошибка ERROR_IN_WOW64 (0xe0000235). - SetupDi-функции возвращают нестандартные коды ошибок, "расшифровку" можно найти в файле setupapi.h (Windows SDK или Windows Driver Kit). - хороший образец работы с устройствами и драйверами - утилита devcon из комплекта Windows Driver Kit, ее исходный код тоже доступен.
5
|
||||||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 25.09.2013, 20:10 [ТС] | |
|
Убежденный, Вы лучший чуловек в мире
))))При всем моем нубстве, прочитав нормально код этой библиотеки, и ваш пост по принципу работы я понял как сделать и ОНО НАКОНЕЦ-ТО!!! ЗАРАБОТАЛО НА XP!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Хотя честно говоря я уже забил на это дело, ибо очень скудны мои знания по программированию... Сижу просто в шоке сейчас, ибо даже не верил что смогу понять это всё... С меня много спасибок )
0
|
|
|
Ушел с форума
|
||
| 26.09.2013, 11:12 | ||
|
Дело в том, что флаг DICS_FLAG_CONFIGSPECIFIC означает, что изменения устройства должны действовать только в пределах определенного профиля оборудования. А в Windows Vista и более новых системах профилей оборудования уже нет, поэтому там достаточно выполнить первые три пункта.
2
|
||
| 26.09.2013, 11:12 | |
|
Помогаю со студенческими работами здесь
20
Нужно простое приложение для вкл/выкл передачи данных Выбор сетевого адаптера для самодельной подставки для ноутбука Разработка приложения для всех версий Windows Установить драйвер для сетевого адаптера на EndlessOS Компьютеру не назначен адрес от сети для сетевого адаптера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|