Страница 2 из 4
Добавлено: Чт авг 18, 2011 22:37
Flasher
ApceH писал(а):Хватит флудить!
Действительно, поддерживаю самокритику, хватит! Сколько уже можно?
ApceH писал(а):Очевидно, что имеются в виду ключи, которые будут внесены перед запуском программы.
Кем или чем будут внесены? Если автоматически, то меня это устроит.
Добавлено: Чт авг 18, 2011 22:43
ApceH
Flasher
Ну, конечно, автоматически! Как ещё???
Думаю будет так.
Вместо ключа /u будем указывать /b <имя_reg-файла_backup-а>.
Перед запуском указанной проги, сохраняем имеющиеся затрагиваемые ключи в backup-файл.
После окончания выполнения проги не просто удаляем ключи (как при ключе /u), а вносим backup-овский reg-файл.
Так я всё понял?
Добавлено: Чт авг 18, 2011 22:51
Flasher
А как программа может сохранить ключи перед запуском, если они ей заведомо неизвестны? Что-то типа того, что делает RegWorks в истории изменений? Т.е. тут нужен какой-то встроенный сканер реестра как у RegMon.
Добавлено: Чт авг 18, 2011 23:21
ApceH
Flasher
Я ключ /b добавлю с целью обеспечения функциональности, предложенной Batya.
Какой-либо мониторинг изменений реестра в kitrun вряд ли появится в ближайшие месяцы. Не для этого он создан.
А ключи, которые нужно сохранить как раз известны. Они будут извлечены из reg-файла, который пользователь указывает при запуске обязательными параметром.
Добавлено: Чт авг 18, 2011 23:27
Flasher
Ну, и для чего я это писал?:
Flasher писал(а):Откуда мне заведомо знать, куда она там чего прописывает? Нужно именно отслеживание без лишних потуг юзера с поисками в реестре.
ApceH писал(а):Ну, конечно, автоматически! Как ещё???
Увы, вот так -
ApceH писал(а):пользователь указывает при запуске
Добавлено: Пт авг 19, 2011 09:04
MVV
Для защиты реестра можно быстренько на ThinApp "сбацать" вполне скромную песочницу (в пределах мегабайта), которая будет виртуалить реестр и нужные папки в папку рядом с собой) а начальные установки могут быть получены запуском регедита в этой песочнице) или просто копированием рег-файла песочницы после запуска оного.
Добавлено: Пт авг 19, 2011 10:44
ApceH
MVV
Внутри песочницы прога будет под админом (с повышением)?
Я вот и говорю, что моя 10 КБ-ая прожка совсем не для этого.
Добавлено: Пт авг 19, 2011 11:25
MVV
Она будет внутри песочницы так, как запустишь песочницу:) и как правило внутри песочниц права админа не сильно рекомендуются. Но писать программы смогут и в LOCAL_MACHINE - в виртуальный.
Но реестр песочница определенно лучше защитит ото всех изменений, вносимых программой. При этом, повторный запуск программы в той же песочнице позволит использовать прежде записанные этой программой записи реестра.
И никаких конфликтов, связанных с существованием ключа с другим содержимым:)
Версия 1.2
Добавлено: Пн авг 22, 2011 14:58
ApceH
Обновил программку.
Добавлен ключ /U и реализован ключ /u
Для запускаемой программы устанавливается рабочая папка, равная рабочей папке kitrun.exe
Исправлена ошибка с обработкой параметров.
Запрещён feedback-эффект курсора для самого kitrun.exe.
Добавлено: Вт авг 23, 2011 10:08
Batya
ApceH писал(а):Если задан параметр /u или /e, дождаться завершения запущенной программы, затем удалить из реестра ключи, внесенные указанным reg-файлом (если /u) или config.regзатронутые ветки полностью (если /e).
файлом и ключ, указанный в параметре /k (если задан).
Что-то конец фразы (из шапки) не по-русски.
/u - это не то же самое, что предполагается через /b?
Добавлено: Вт авг 23, 2011 11:52
ApceH
Batya
Опечатка. Исправил. Спасибо.
С /u просто удаляются внесённые ключи. Причём только внесённые. Используется обычный вызов RegDeleteKey, который не может удалить ключ, имеющий подключи. При удалении запомненные внесённые ключи перебираются в обратном порядке. Невозможность удаления не является ошибкой. Поэтому ключи, созданные программой уже во время запуска не удаляются.
А /U действует жёстче. При запоминании вносимых ключей их имена (пути) обобщаются/сливаются. То есть в конце обработки reg-файла в списке остаются самые высокоуровневые ключи. Например, HKCU\Software\MyProg.
А в /b (backup) очевидно должно будет сначала сохранятся имеющееся значение, а потом уже замещаться.
файлом и ключ, указанный в параметре /k (если задан).
Этой фразы уже нет в ридми последнем. Я решил не удалять ключ, указанный через /k ни при /u, ни при /U. Если это нужно, можно чуть подправить reg-файл, внести туда первой строкой этот ключ, а из параметров /k убрать.
MVVНо реестр песочница определенно лучше защитит ото всех изменений, вносимых программой.
Естественно. Но у меня такая цель не стоит. Кагбэ применяю к нормальным программам, от которых не жду зла. Главное, чтобы их можно было копировать просто (или устанавливать в составе сборки), не требуя админ-прав для внесения reg-файлов (как при использовании regedit.exe и reg.exe).
Добавлено: Пт авг 26, 2011 15:57
LonerD
Хорошая утилитка, и будет неплохо если она продолжит развитие.
Что еще хотелось бы видеть в плане минимальной "портабельности":
1. Возможность создавать бэкап ключа и восстановления его после работы программы. Скажем, в системе установлена и настроена программа, есть записи в реестре. А тут мы со своим Тоталом запускаем копию этой программы и затираем реестр. Потому нужна опциональная возможность сохранять существующий ключ реестра, внести свои записи, а после отработки программы - удалить свои записи и восстановить изначальное значение реестра.
2. Возможность сохранять ключи реестра в процессе работы. То есть мы внесли ключ реестра из файла Key.reg (который ллежит в папке с программой), поработали с программой, записи в реестре изменились, и при закрытии программы получившийся ключ реестра с новыми настройками записывается обратно в файл Key.reg.
3. Некоторые программы лезут не только в реестр, но и в системные папки, например, в Мои документы или AppData\Roaming\.
Неплохо бы реализовать возможность сохранять-удалять-восстанавливать данные из системных папок. Пожелания - аналогично реестру:
- возможность удалять папку после закрытия программы
- возможность при закрытии программы бэкапить данные в папку с программой (и при запуске программы - восстанавливать эти данные)
- возможность бэкапить имеющиеся в папке данные и восстанавливать их после окончания работы программы.
Добавлено: Пт авг 26, 2011 17:01
ApceH
LonerD

Как раз сижу, пишу код (правда kIT UP). Но так и быть, доделаю этот функционал.
Сделаю и пункт 1 (/b), и пункт 2.
А пункт 3 пока подождёт...
Внимание!
Выложил 1.3 со следующими исправлениями:
- Ключ /e переименован в /U в целях унификации с ключами /b и /s.
- Сообщение "Wrong usage!" дополнено открытием в фоне readme.txt.
Надеюсь переименование никому не доставит серьёзных неудобств

Добавлено: Вс авг 28, 2011 00:44
ApceH
Обновил до 1.4:
Исправлена ошибка, из-за которой /u выполнялся даже, если ключи не были импортированы (т.к. уже были в реестре и /f не задан).
Добавлены ключи /p и /P.
Во всех строках, потенциально содержащих пути, заменяются переменные окружения. Т.е. во всех, кроме аргумента параметра /k, в том числе в параметрах запускаемой программы.
1.7
Добавлено: Пн авг 29, 2011 22:38
ApceH
Фух! Похоже сделал, всё что нужно. Осталось только отловить баги, и всех прошу с этим помочь!
Выложил 1.7:
Реализованы параметры /b, /B (это бэкап в файл)
Реализованы параметры /s, /S (это сохранение в файл после работы проги)
Реализованы параметры /r, /R (это восстановление после работы проги как было)
Реализованы параметры /d, /D (это удаление перед импортом, чтобы песочница была чистой)
Будем считать эту RC-версией. Потому, что если багов нет, то на ближайшие месяц-другой разработка kIT Portable Launcher приостановится.
Скачать. SHA1: bcd2a1cf2cc50ca7c82a9b15897ba0244389110e
LonerD писал(а):2. Возможность сохранять ключи реестра в процессе работы. То есть мы внесли ключ реестра из файла Key.reg (который ллежит в папке с программой), поработали с программой, записи в реестре изменились, и при закрытии программы получившийся ключ реестра с новыми настройками записывается обратно в файл Key.reg.
Вот теперь запросто данный сценарий реализуется. В readme есть пример:
kitrun /f /p /D /U /R /S putty.reg putty.reg path\putty.exe
— если предположить, что рядом с kitrun.exe лежит putty.reg, то данная строка запуска обеспечивает некую ПЕСОЧНИЦУ, притом чистую. PuTTY будет запущен с настройками, взятыми из putty.reg, а после его завершения соответствующая ветка будет возвращена в исходное состояние. Большая буква S обеспечивает сохранение даже новых ключей, созданных в процессе работы программы.
...
— Если в качестве основного reg-файла и файла параметра /b (или /B) указан один и тот же файл, то сохранение в него текущих значений произойдёт ПОСЛЕ его прочтения для импорта. То есть старые и новые значения поменяются местами. ...
— Параметр /s (или /S), очевидно, тоже срабатывает после чтения reg-файла для импорта, и если здесь указан тот же reg-файл, что и в качестве основного, то можно от запуска к запуску изменять и дополнять reg-файл, связанный с программой. А в сочетании с ключом /r можно создать некое подобие портативного профиля (песочницы), не зависящего от настроек текущего пользователя и не влияющего на них.