Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Применение изменений реестра без перезагрузки

Автор: Kardinalli
Дата сообщения: 26.07.2008 19:27
Собственно сабж. Произведены изменения в реестре, как применить их без перезагрузки? Подчеркиваю, не из программы, а средствами самой Винды? Как пример (собственно это и надо) изменение набора курсоров. После прописывания в реестре, чтобы появился свой набор, мне требуется перезагрузка, но ведь при выборе из панели управления, перезагрузка не нужна. Что еще нужно сделать, какую программу запустить?
Автор: Skipper
Дата сообщения: 26.07.2008 21:43
Кильни Explorer.exe, он сам должен потом запуститься. Возможно прокатит
Автор: Kardinalli
Дата сообщения: 26.07.2008 22:39
Skipper
А если при этом открыты приложения? И как это сделать из бат-файла, или командной строки?
Автор: vjunk
Дата сообщения: 26.07.2008 23:42
Нужно послать широковещательное сообщение, типа такого:

Код: SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Policy", SMTO_NORMAL, 1000, &res);
Автор: Sampron
Дата сообщения: 27.07.2008 00:09
Kardinalli
Попробуй это: http://data.cod.ru/63805226442
Автор: Kardinalli
Дата сообщения: 27.07.2008 18:01
Sampron

Цитата:
Попробуй это: http://data.cod.ru/63805226442

Что - "это"? Что за екзешник?

vjunk
Как это сделать из дельфи или VB я знаю, но мне нужно сделать это средствами Win.
Автор: Sampron
Дата сообщения: 27.07.2008 18:58
Kardinalli
Тогда либо командной строкой либо перезапуском эксплорера.
Автор: Kardinalli
Дата сообщения: 27.07.2008 19:14
Sampron

Цитата:
Тогда либо командной строкой либо перезапуском эксплорера.

Ну так я и спрашиваю, КАК ЭТО СДЕЛАТЬ командной строкой???
Автор: Sampron
Дата сообщения: 27.07.2008 21:09
Kardinalli

Цитата:
Ну так я и спрашиваю, КАК ЭТО СДЕЛАТЬ командной строкой???

А хрен его знает.
Автор: igor_andreev
Дата сообщения: 27.07.2008 21:57
Kardinalli
Если изменения в ветке HKEY_CURRENT_USER, то

Код:
rundll32.exe user32.dll,UpdatePerUserSystemParameters
Автор: Kardinalli
Дата сообщения: 27.07.2008 22:05
igor_andreev
И в этой ветке тоже. Я эту команду давно "откопал", но эффекта от нее ноль.
Пробовал такой вариант rundll32.exe user32.dll,UpdatePerUserSystemParameters,1,True
но выдает ошибку.

Кстати, отследил монитором, что запускается при смене курсора через панель управления. Именно rundll32, вопрос только в том, с какими параметрами...

Автор: ShIvADeSt
Дата сообщения: 28.07.2008 01:04
Попробуй это
SystemParametersInfo(SPI_SETCURSORS
поиграй с параметрами
Автор: igor_andreev
Дата сообщения: 28.07.2008 08:48
Kardinalli

Цитата:
Именно rundll32, вопрос только в том, с какими параметрами...

Я как-то отследил недокументированную комстроку одной гнусной программки при помощи консольной cmdline.exe http://www.diamondcs.com.au/consoletools/cmdline.php
Она выводит в stdout список запущенных процессов и их строку запуска.

Сделал папку C:\test. Пуск-Выполнить-cmd. B командной строке ввел:
for /L %a in (1 1 1000) do cmdline>c:\test\%a.txt
Жмакнул Enter и сразу запустил нужную программку. Ну дальше понятно, поиском Far-а нашел среди тысячи файликов в папке c:\test нужные, из тыщщи файлов в четырех было то, что мне надо. Наверно попроще способы есть, но мне такое нечасто нужно, так использовал, что под рукой было
Автор: Kardinalli
Дата сообщения: 08.08.2008 19:51
igor_andreev
Спасибо дружище! Если даже не поможет сейчас, то пригодится в будущем.
А пока попробую.
Маленькое уточнение - cmdline сбросить в system32 ?
Автор: igor_andreev
Дата сообщения: 09.08.2008 10:48
Kardinalli
Ну да, в любую папку, которая прописана в переменной PATH, system32 вполне подходит.
Это, чтобы не писать в командной строке всегда полный путь к утилите, ... do d:\folder\subfolder\cmdline...

P.S. А это рубоард заменил в моем предыдущем посту слово "нашел" на ссылку http://dash.ru/_find/ ? Это так теперь реклама вставляется автоматом? Я понятия не имею, кто такие dash.ru и ссылку на них не давал
Автор: copsmith
Дата сообщения: 15.08.2008 19:54
Ты не виноват. Это "продажная" реклама

Цитата:
Реклама цепляется к словам (10 шт.):
Есть вероятность, что список не полный:
скачал скачать скачай нашел купить купил статья обзор samsung телефона
Автор: Ivax
Дата сообщения: 25.08.2008 05:48
Kardinalli

Цитата:
Подчеркиваю, не из программы, а средствами самой Винды

А как из программы применить изменения в реестре Вы уже разобрались? Поделитесь опытом, если программый вариант у Вас рабочий.
Автор: Kardinalli
Дата сообщения: 26.08.2008 20:58
Ivax
У меня нет программы, из которой это нужно было бы сделать, но там это можно сделать без особых проблем через API.
А как сделать средствами исключительно Windows, я разобрался. Не слишком корректно, возможно, но для конкретной задачи отлично работает.
Автор: Ivax
Дата сообщения: 28.08.2008 08:32
Kardinalli
Цитата:
... я разобрался.
Так поделись с народом, пусть и не очень корректно, главное работает.


Цитата:
... без особых проблем через API.
Вот без особых проблем не получается. Вполне приличный кусок кода (нашел в Королевстве Дельфи) и работает через раз. По этому и спросил, думал Вы такое уже делали.


Автор: demon1981
Дата сообщения: 20.10.2008 10:18
Kardinalli

Цитата:
А как сделать средствами исключительно Windows, я разобрался

не поделитесь?

Добавлено:
igor_andreev

Цитата:
Наверно попроще способы есть

for /L %a in (1 1 20000) do cmdline|find /i /v "bthprops.cpl"|find /i /v "3172"|find /i "rundll32">>c:\temp\1\1.txt
вот что-то попроще. В каждом конкретном случае можно параметры в файнд менять

Добавлено:
не в тему конечно, но раз уж пошел разговор...
как направить вывод от
Цитата:
for /L %a in (1 1 20000) do cmdline|find /i /v "bthprops.cpl"|find /i /v "3172"

в два фильтра и в 2 файла соответственно одновременно. Скажем, если мне надо найти строку "123" и строку "345"?
Автор: Sympathy
Дата сообщения: 08.11.2008 13:27
Прога PicaView 2 при запуске (когда делаешь ПКМ) постоянно регистрирует 2 отдельно специально устанавливавшихся когда-то модуля (Plug-in) от ACDSee (C:\Program Files\Common Files\ACD Systems\PlugIns2)



А вот после перезагрузки компа - опять та же песня, снова ненадолго правда вылезающие окошки регистрации.
Как победить?
Автор: Sympathy
Дата сообщения: 09.12.2008 10:32
Что ж никто не может ответить? Неужели так сложно... ну кроме, как для меня?
Автор: Sympathy
Дата сообщения: 13.01.2009 14:32
Люди... второй год жду...
Автор: Robbie_Rotten
Дата сообщения: 21.11.2009 14:56
Кста, у меня та же шняга! Достало уже
Автор: Sergey_Demchuk
Дата сообщения: 24.05.2010 11:43
Тема актуальна, так и не понял, есть ли ответ. Нужно ассоциировать открытие файлов с конкретной программой. Но ассоциации вступают в силу только после перезагрузки. А как обойтись без перегруза?
Автор: AviDen
Дата сообщения: 05.06.2010 14:40

Цитата:
Нужно ассоциировать открытие файлов с конкретной программой. Но ассоциации вступают в силу только после перезагрузки
Неправда. Нажмите на интересующий файл правой кнопкой мыши --> Открыть с помощью --> Выбор программы, выберите нужную программу, отметьте флажок "Использовать ее для всех файлов такого типа" и нажмите OK. Изменения будут применены немедленно.
Автор: mugil_cephalus
Дата сообщения: 06.06.2010 11:28
Sergey_Demchuk

Цитата:
Тема актуальна, так и не понял, есть ли ответ. Нужно ассоциировать открытие файлов с конкретной программой. Но ассоциации вступают в силу только после перезагрузки. А как обойтись без перегруза?

для смены файловых ассоциаций и файловых типов перезагрузка не требуется
для примера - код батника (который можно впоследствие кастомизировать под любое ПО )
код создает файл mypic.myNewJpgExt в папке батника и открывает его в программе просмотра изображений и факсов (расширение *.myNewJpgExt любых файлов теперь ассоциировано с этой программой по умолчанию и без перезагрузки)
p.s.
также легко можно удалить все необходимые файловые ассоциации и также без перезагрузки
вопросы - Задачи на bat-файлах


Код: rem @echo off
if "_%OS%" neq "_Windows_NT" goto:eof
setlocal
set "ext=myNewJpgExt"
1>>"%~dp0%ext%.bck" 2>&1 assoc .%ext%
1>>"%~dp0%ext%.bck" 2>&1 ftype %ext%
assoc .%ext%=%ext%file
ftype %ext%file=rundll32.exe %SystemRoot%\System32\shimgvw.dll,ImageView_Fullscreen %%1
%~d0
cd\
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do for /f "tokens=*" %%i in ('dir /b/a-d/s "%%~a:\*.jpg"') do set "mypic=%%~i" &&goto:eoc
:eoc
copy /-y "%mypic%" "%~dp0mypic.%ext%"
start "" "%~dp0mypic.%ext%"
pause

Страницы: 1

Предыдущая тема: Печать на несколько принтеров


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.