Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   синтаксис в бат-файле (http://forum.oszone.net/showthread.php?t=276396)

Dudee 24-01-2014 13:55 2295268

синтаксис в бат-файле
 
Всем добрый день!
Перепробовал все варианты, на вас последняя надежда :)
Ситуация такая: есть батник, который помимо всего прочего добавляет несколько значений в реестр. Вот эти строчки:

Код:

y:\reg.exe add HKEY_CLASSES_ROOT\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
y:\reg.exe add HKEY_CLASSES_ROOT\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f

y:\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f
y:\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f

Так вот, если закомментить вторую пару, то первая пара отрабатывает нормально. А если раскомментить вторую пару, то (ВНИМАНИЕ) и в разделы 1ой пару, и в разделы 2ой пары добавляются значения 2ой пары, а именно "C:\FirefoxPortable\FirefoxPortable.exe"

Менял их местами по разному, добавлял\убирал кавычки в пути ключа реестра - результат тот же!
Что с ним ещё сделать?

Iska 24-01-2014 14:04 2295280

Почему именно «y:\reg.exe»? «reg.exe» у Вас что — в системе отсутствует?

Цитата:

Цитата Dudee
Так вот, если закомментить вторую пару, то первая пара отрабатывает нормально. А если раскомментить вторую пару, то (ВНИМАНИЕ) и в разделы 1ой пару, и в разделы 2ой пары добавляются значения 2ой пары, а именно "C:\FirefoxPortable\FirefoxPortable.exe" »

Дело в том, что раздел «HKEY_CLASSES_ROOT» складывается из двух частей: Реестр Windows — Википедия, HKEY_CLASSES_ROOT.

Для начала объясните, чего Вы хотите добиться.

Dudee 24-01-2014 15:11 2295328

Вот нежданчик .. получается, что это одна и та же ветка только называется по разному, и просто напросто какое значение было записано последним, такое будет в обеих ветках ?.. приехали ..

Я это делаю это, чтоб удалённо прописать Firefox браузером по умолчанию. Почему именно эти ветки? Я просто сравнил два снимка реестра, до и после установки Firefox'а по умолчанию на локальной машине (веток гораздо больше, эти я взял для примера).

Тогда вопрос : как сам Firefox умудряется прописать РАЗНЫЕ значения в одну и ту же ветку?

Iska 24-01-2014 15:20 2295334

Цитата:

Цитата Dudee
Вот нежданчик .. получается, что это одна и та же ветка только называется по разному, и просто напросто какое значение было записано последним, такое будет в обеих ветках ?.. приехали .. »

Это не «одна и та же ветка». Ещё раз:
Цитата:

Цитата Iska
раздел «HKEY_CLASSES_ROOT» складывается из двух частей »

приоритет у HKCU.

Цитата:

Цитата Dudee
Я это делаю это, чтоб удалённо прописать Firefox браузером по умолчанию. »

Исполните удалённо (или групповой политикой) это.

Цитата:

Цитата Dudee
Тогда вопрос : как сам Firefox умудряется прописать РАЗНЫЕ значения в одну и ту же ветку? »

Это не «одна и та же ветка».

Dudee 24-01-2014 15:28 2295338

Цитата:

Цитата Iska
Исполните удалённо (или групповой политикой) это. »

Дело в том что у меня версия портабл, но не суть важно, потому что с вашей помощью выяснил, что то, что было вписано в LOCAL_MACHINE транслируется в CLASSES_ROOT, а наоборот - нет. То есть достаточно просто поменять местами строчки и всё прописывается правильно! В данном случае так:
Код:

y:\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f
y:\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f

y:\reg.exe add HKEY_CLASSES_ROOT\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
y:\reg.exe add HKEY_CLASSES_ROOT\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f

Iska, большущее спасибо за правильное направление, а то бы так и искал ошибки в синтаксисе!

Iska 24-01-2014 15:54 2295351

Цитата:

Цитата Dudee
а наоборот - нет. »

И наоборот — при условии, что нет аналогичного пути в HKCU. Если есть — пишется именно в HKCU.

Dudee 24-01-2014 18:34 2295480

Рано обрадовался ..
В общем получается, что если запустить батник мышкой из-под юра на локальном компе, то всё отлично - Firefox везде правильно прописывается, ссылка из любого документа открывается именно ей, а вот если этот батник выполняется при включении кампа через групповую политику, то всё прописывается, но ссылки в документах открываются прежним браузером .. Подозреваю, что не хватает чего-то в CURRENT_USER.
Вот 1й батник, он запускается при включении кампа:
Код:

c:\FirefoxPortable\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f
c:\FirefoxPortable\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f
c:\FirefoxPortable\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f
c:\FirefoxPortable\reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ftp\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\FirefoxPortable.exe\"" /f

c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\ftp\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f

c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\.html\ /ve /t REG_SZ /d FirefoxHTML /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\.htm\ /ve /t REG_SZ /d "FirefoxHTML" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\.shtml\ /ve /t REG_SZ /d "FirefoxHTML" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\.xht\ /ve /t REG_SZ /d "FirefoxHTML" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\.xhtml\ /ve /t REG_SZ /d "FirefoxHTML" /f

c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\ftp\DefaultIcon\ /ve /t REG_SZ /d "C:\FirefoxPortable\App\Firefox\firefox.exe,1" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\http\DefaultIcon\ /ve /t REG_SZ /d "C:\FirefoxPortable\App\Firefox\firefox.exe,1" /f
c:\FirefoxPortable\reg.exe add HKEY_CLASSES_ROOT\https\DefaultIcon\ /ve /t REG_SZ /d "C:\FirefoxPortable\App\Firefox\firefox.exe,1" /f

Вот 2й батник, он выполняется при входе юзера в систему:
Код:

c:\FirefoxPortable\reg.exe add HKEY_CURRENT_USER\Software\Classes\http\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
c:\FirefoxPortable\reg.exe add HKEY_CURRENT_USER\Software\Classes\https\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f
c:\FirefoxPortable\reg.exe add HKEY_CURRENT_USER\Software\Classes\ftp\shell\open\command /ve /t REG_SZ /d "\"C:\FirefoxPortable\App\Firefox\firefox.exe\" -osint -url \"%%1\"" /f

c:\FirefoxPortable\reg.exe add HKEY_CURRENT_USER\Software\Clients\StartMenuInternet /ve /t REG_SZ /d "FIREFOX.EXE" /f
c:\FirefoxPortable\reg.exe add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage /ve /t REG_SZ /d "ProgramsCache" /f

Может вы видите чего не хватает?

Iska 24-01-2014 20:15 2295553

Цитата:

Цитата Dudee
Может вы видите чего не хватает? »

Я вижу, что не надо заниматься извращениями в виде переназначения ассоциаций в реестре на portable-приложение. Моё мнение таково.

Foreigner 24-01-2014 22:34 2295648

Цитата:

Цитата Dudee
c:\FirefoxPortable\reg.exe »

Что за reg.exe? Я бы поостерегся.

Dudee 26-01-2014 11:45 2296472

Понятно, конструктивная информация закончилась, началась критика ..
Цитата:

Цитата Iska
Я вижу, что не надо заниматься извращениями в виде переназначения ассоциаций в реестре на portable-приложение. Моё мнение таково. »

Надо.
Цитата:

Цитата Foreigner
Что за reg.exe? Я бы поостерегся. »

Всё в порядке, это стандартная майкросовтовская утилита для работы с реестром.

Давайте не доводить до "посмотреть в гугле религия не позволяет" или "много раз тема поднималась". Видел я, что пишет гугл, и подходит это для запуска батника из-под юзера, но не при запуске машины из групповых политик.

Если не знаете, ничего не пишите, это просто.

Iska 26-01-2014 12:55 2296508

Цитата:

Цитата Dudee
Понятно, конструктивная информация закончилась, началась критика .. »

Хотите конструктивную критику — будет Вам конструктивная. Вы импортировали данные в реестр. Бумс! Вышел из строя ИБП, в соседнем кабинете включили чайник, автомат отрубил сеть. Ваши импортированные данные остались в реестре и перекрыли ранее существовавшие настройки. Да и кому понравится, что существующие ассоциации переназначены на что-то «левое».

Я не пойму, зачем сие вообще нужно?! Firefox в виде portable-приложения превосходно работает без данных манипуляций с реестром. Если переназначаете ассоциации и прочее — в чём тогда смысл заведения portable-приложения? Я этого понять никак не могу.

Foreigner 26-01-2014 13:20 2296527

Цитата:

Цитата Dudee
Всё в порядке, это стандартная майкросовтовская утилита для работы с реестром. »

Я так понимаю, что стандартный, штатный reg.exe запрещен? Тогда можно импортировать reg-файл. Или используйте специально для этого предназначенные утилиты ftype и assoc (надеюсь они не запрещены):

Код:

@echo off
setlocal

assoc http=URL:HyperText Transfer Protocol
assoc https=URL:HyperText Transfer Protocol with Privacy
assoc ftp=URL:File Transfer Protocol

for %%i in (http https ftp) do ftype %%i="C:\FirefoxPortable\App\Firefox\firefox.exe" -osint -url %%1

Цитата:

Если не знаете, ничего не пишите, это просто
Не надо горячиться, вы сюда пришли с вопросами, вам стараются помочь.

Iska 02-02-2014 18:45 2301362

Dudee, я нашёл информацию, которую хотел Вам показать по поводу объединения информации из двух кустов реестра («machine» и «user») в один раздел «HKEY_CLASSES_ROOT»: Merged View of HKEY_CLASSES_ROOT (Windows).

Dudee 14-02-2014 12:49 2309020

Спасибо за информацию, в целом очень интересно.
Но мозилла всё равно спрашивает сделать ли её по умолчанию, хотя все ссылки и странички открывает именно она :)


Время: 23:07.

Время: 23:07.
© OSzone.net 2001-