Показано с 1 по 10 из 10.

Значок сетевого подключения и комстрока

  1. #1
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243

    Значок сетевого подключения и комстрока

    Возникла небольшая проблема в процессе создания скрипта автоматической настройки сетевого подключения в PE-среде.

    Для иллюстрации - конкретный пример в обычной Windows XP:
    - открываем папку "Сетевые подключения",
    - снимаем в окне свойств подключения галку "Пpи пoдключeнии вывecти знaчoк в oблacти увeдoмлeний", жмём Ok.
    Всё, значок сетевого подключения сразу исчезает из области уведомлений.

    Теперь пробуем вернуть этот значок обратно, для чего выполняем файл ShowNetIcon.cmd с таким содержанием:
    Код:
    @FOR /F "DELIMS=" %%? IN ('REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /S^|FINDSTR \\Connection$') DO @REG ADD "%%?" /V ShowIcon /T REG_DWORD /D 1 /F>nul
    В результате имеем всё небходимое (запись в реестре и соотв.галка в свойствах) для отображения значка сетевого подключения в области уведомлений. Но! Значок этот появится сразу только после вполнения процедуры "Обновить" (F5) в папке сетевых подключений, или если нажать Ok в окне свойств подключения.

    Вопрос: как выполнить эту процедуру из командной строки?

    Другой вопрос: можно ли (так же - программно) ускорить обновление состояния этого значка (в PE он появляется сам после выполнения скрипта, но с задержкой)?

    Код:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Update]
    "UpdateMode"=dword:00000000
    - не помогает.
    Последний раз редактировалось VV2006; 28.02.2010 в 03:46. Причина: попытка более простого (бестолкового) изложения :)

  2. Будь в курсе!
    Реклама на VirusInfo

    Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

    Anti-Malware Telegram
     

  3. #2
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    Видно зря создал тему здесь - не показалась никому интересной... На всякий случай , - вдруг программеры всё же объявятся - нашёл два способа решения, оба - не через API.

  4. #3
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Alex Plutoff
    Регистрация
    05.02.2006
    Адрес
    Украина
    Сообщений
    1,728
    Вес репутации
    959
    Цитата Сообщение от VV2006 Посмотреть сообщение
    ...нашёл два способа решения, оба - не через API.
    - и зачем это нужно, - изобретать велосипед, если уже существуют функции Win API?..
    - впрочем, понятно, - неохота изучить состав существующего API, легче самому накропать нечто эдакое

    З.Ы. не принимайте это на свой счёт, я это так - вообще, чтоб разговор поддержать, ну вот и пофлудил немножко..
    С уважением,
    Alex Plutoff
    А. ПЛАТОВ

  5. #4
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    Alex Plutoff, самое интересное, что этот "велосипед" почему-то никто не изобрёл: ни с API, ни без него. По крайней мере, попадавшиеся мне в инете готовые решения типа desktoprefresh.exe и т.п. для данного случая абсолютно бесполезны.
    Просто сделал для себя интересное открытие: изменённые настройки сетевого подключения применяются созданием в ветке Connections реестра временного ключа (мульти)строкового типа с произвольным значением, вот так например:
    Код:
    @reg add hklm\System\CurrentControlSet\Control\Network\Connections /v Temp /t REG_SZ /d Temp /f>nul
    @reg delete hklm\System\CurrentControlSet\Control\Network\Connections /v Temp  /f>nul
    З.Ы. А так хотелось бы увидеть "велосипед"!..

  6. #5
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Я подобные штуки через *Notify* делал. Например, можно заставить проводник не замечать файл/папку. Типа оно deleted. Правда, это таки API...
    Дык выкладывайте варианты. "Не через API" - это в смысле написанное на чем-то интерпретируемом? Жаба - тоже не винапи. Это жабоапи...
    Любые "хаки" (нестандартные решения) кому-то да интересны. Выкладывайте, пожалуйста, сильно просим!
    Последний раз редактировалось antanta; 07.03.2010 в 19:06.

  7. #6
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    antanta, нестандартный вариант решения задачи см. в моём посте выше.
    Почему нестандартный - потому что знаю и на 100% уверен: никакие ключи в ветке Connections не создаются ни при выполнения процедуры "Обновить" (F5) в папке сетевых подключений, ни при нажатии Ok в окне свойств подключения.

    Какие функции API при этом используются, для меня до сих пор загадка. Кстати, и заинтересовался ими поначалу только постольку, поскольку сразу не удавалось найти простого решения. Кто владеет эзотерическими знаниями API, чтобы описать эти процедуры через них - пожалуйста, поделитесь! Хоть задача и решена, до сих пор интересно, как происходит на самом деле в Windows XP применение изменённых настроек сетевого подключения.

    Другой способ решения специфичен - применим только для PE-среды: в скрипт поднятия сети сразу после запуска PENetwork включаем ShowNetIcon.cmd.

  8. #7
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    04.09.2007
    Сообщений
    584
    Вес репутации
    657
    для программистов
    Код:
    Как уведомить все приложения, что реестр был изменён?
    
    Для этого можно послать в систему широковещательное сообщение WM_WININICHANGE, указав в нём, что изменения касаются реестра. Большинство приложений, работа которых связана с реестром, должны реагировать на сообщение WM_WININICHANGE.
    
    Пример:
    
    Code:
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,LongInt(PChar('RegistrySection')));
    end;
    ©Drkb::02270

  9. #8
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    Virtual, скорее всего, не то:
    wm_WinIniChange уведомляет окно веpхнего уpовня о том, что файл инициализации Windows, WIN.INI, изменился.
    WM_WININICHANGE устарело. Оно включено для совместимости с более ранними версиями Windows. Новые прикладные программы должны использовать сообщение WM_SETTINGCHANGE.

  10. #9
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    04.09.2007
    Сообщений
    584
    Вес репутации
    657
    мдяяя эксплоеру глубоко плевать как на WININICHANGE так и на SETTINGCHANGE .

    а данные значки подгружает именно он! с помощью внешней дллки, похоже как обьект ActiveX
    ф5 в окне сетевых настроек, заставляет данный ActiveX перечитать настройки из реестра удалить все иконки, и выдать состояние по новой...
    имя окна ответчика за иконки "Connections Tray"
    имя длл, похоже: netshell.dll
    Код:
    Exports:
    Ordinal	RVA		Name
    2	00001B94	DllCanUnloadNow
    3	00005F52	DllGetClassObject
    4	00012D68	DllRegisterServer
    5	00012EC9	DllUnregisterServer
    1	000283F5	DoInitialCleanup
    6	0001631F	HrCreateDesktopIcon
    7	0002890B	HrGetAnswerFileParametersForNetCard
    8	0000DA93	HrGetExtendedStatusFromNCS
    9	0001305A	HrGetIconFromMediaType
    10	000285FF	HrGetInstanceGuidOfPreNT5NetCardInstance
    11	0001826B	HrGetNetConExtendedStatusFromGuid
    12	000182FA	HrGetNetConExtendedStatusFromINetConnection
    13	0001819B	HrGetStatusStringFromNetConExtendedStatus
    14	000093A4	HrIsIpStateCheckingEnabled
    15	000163E3	HrLaunchConnection
    16	000164A4	HrLaunchConnectionEx
    17	000154A0	HrLaunchNetworkOptionalComponents
    18	00028652	HrOemUpgrade
    19	00012F02	HrRenameConnection
    20	00001DF1	HrRunWizard
    21	00012FC1	InvokeDunFile
    22	00012EE2	NcFreeNetconProperties
    23	00012EF2	NcIsValidConnectionName
    24	000284FB	NetSetupAddRasConnection
    25	000284E9	NetSetupFinishInstall
    26	000618C9	NetSetupInstallSoftware
    27	000285A0	NetSetupPrepareSysPrep
    28	000284D9	NetSetupRequestWizardPages
    29	000299B3	NetSetupSetProgressCallback
    30	0000DB47	NormalizeExtendedStatus
    31	000181EE	RaiseSupportDialog
    32	0001301E	RepairConnection
    33	00029241	StartNCW
    короче сам черт ногу сломит, дальше лень разбиратся ибо нафиг это нужно?
    ЗЫ дальше разбирайтесь сами .
    ЗЫЗЫ запускать экспортируемые функции напр так
    Код:
    rundll32 netshell.dll,StartNCW
    Последний раз редактировалось Virtual; 09.03.2010 в 16:27.

  11. #10
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    Программных способов вызова папки "Сетевые подключения" несколько:
    Код:
    rundll32 shell32.dll,Control_RunDLL ncpa.cpl 
    control ncpa.cpl 
    control netconnections
    Только дальше-то что, открыли папку и? Программный аналог кнопки F5 для неё где?
    Остался только чисто теоретический интерес.
    Реализуемую функцию: перехватить, определить... выкинуть и забыть!

Похожие темы

  1. сбой сетевого подключения
    От rekut059 в разделе Помогите!
    Ответов: 2
    Последнее сообщение: 28.02.2012, 02:53
  2. Ответов: 0
    Последнее сообщение: 01.11.2009, 13:54
  3. Ответов: 0
    Последнее сообщение: 01.11.2009, 13:54
  4. BSOD после подключения сетевого кабеля win2000
    От VictorZuev в разделе Помогите!
    Ответов: 7
    Последнее сообщение: 22.02.2009, 06:27
  5. BSOD после подключения сетевого кабеля
    От Alexey Emelyano в разделе Помогите!
    Ответов: 10
    Последнее сообщение: 22.02.2009, 04:49

Метки для этой темы

Свернуть/Развернуть Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Page generated in 0.00107 seconds with 17 queries