Войти

Показать полную графическую версию : синтаксис в бат-файле


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

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
Почему именно «y:\reg.exe»? «reg.exe» у Вас что — в системе отсутствует?

Так вот, если закомментить вторую пару, то первая пара отрабатывает нормально. А если раскомментить вторую пару, то (ВНИМАНИЕ) и в разделы 1ой пару, и в разделы 2ой пары добавляются значения 2ой пары, а именно "C:\FirefoxPortable\FirefoxPortable.exe" »
Дело в том, что раздел «HKEY_CLASSES_ROOT» складывается из двух частей: Реестр Windows — Википедия, HKEY_CLASSES_ROOT (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B5%D1%81%D1%82%D1%80_Windows#HKEY_CLASSES_ROOT).

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

Dudee
24-01-2014, 15:11
Вот нежданчик .. получается, что это одна и та же ветка только называется по разному, и просто напросто какое значение было записано последним, такое будет в обеих ветках ?.. приехали ..

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

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

Iska
24-01-2014, 15:20
Вот нежданчик .. получается, что это одна и та же ветка только называется по разному, и просто напросто какое значение было записано последним, такое будет в обеих ветках ?.. приехали .. »
Это не «одна и та же ветка». Ещё раз:
раздел «HKEY_CLASSES_ROOT» складывается из двух частей »
приоритет у HKCU.

Я это делаю это, чтоб удалённо прописать Firefox браузером по умолчанию. »
Исполните удалённо (или групповой политикой) это (http://forum.oszone.net/post-2290969.html#post2290969).

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

Dudee
24-01-2014, 15:28
Исполните удалённо (или групповой политикой) это. »
Дело в том что у меня версия портабл, но не суть важно, потому что с вашей помощью выяснил, что то, что было вписано в 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
а наоборот - нет. »
И наоборот — при условии, что нет аналогичного пути в HKCU. Если есть — пишется именно в HKCU.

Dudee
24-01-2014, 18:34
Рано обрадовался ..
В общем получается, что если запустить батник мышкой из-под юра на локальном компе, то всё отлично - 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
Может вы видите чего не хватает? »
Я вижу, что не надо заниматься извращениями в виде переназначения ассоциаций в реестре на portable-приложение. Моё мнение таково.

Foreigner
24-01-2014, 22:34
c:\FirefoxPortable\reg.exe »
Что за reg.exe? Я бы поостерегся.

Dudee
26-01-2014, 11:45
Понятно, конструктивная информация закончилась, началась критика ..
Я вижу, что не надо заниматься извращениями в виде переназначения ассоциаций в реестре на portable-приложение. Моё мнение таково. »
Надо.Что за reg.exe? Я бы поостерегся. »
Всё в порядке, это стандартная майкросовтовская утилита для работы с реестром.

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

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

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

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

Foreigner
26-01-2014, 13:20
Всё в порядке, это стандартная майкросовтовская утилита для работы с реестром. »

Я так понимаю, что стандартный, штатный 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
Dudee, я нашёл информацию, которую хотел Вам показать по поводу объединения информации из двух кустов реестра («machine» и «user») в один раздел «HKEY_CLASSES_ROOT»: Merged View of HKEY_CLASSES_ROOT (Windows) (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724498(v=vs.85).aspx).

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




© OSzone.net 2001-2012