|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
.NET 4.x Единый для всех версий Windows (от 5.1 и выше), способ для вкл\выкл сетевого адаптера23.09.2013, 21:09. Показов 9984. Ответов 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 Компьютеру не назначен адрес от сети для сетевого адаптера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|