Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [Решено] Regedit через терминал.  (Прочитано 3986 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
[Решено] Regedit через терминал.
« : 26 Апреля 2013, 20:35:02 »
Решение (клик)

Кхе... Может и было, а может мне не понравились решения.

Есть ключ /HKCU/Software/Wine/Explorer/display в котором задаётся название рабочего стола.
В /HKCU/Software/Wine/Explorer/Displays есть два таких стола. Default (800x600) и NoEmuDesktop ().
Собственно, как можно без создания и привлечения .reg файлов прямо из терминала изменять display .
Кажется, видел уже такое. Правда решалась там другая проблемка. Да и не запомнил.
Если такого способа нет, то пусть хоть бы и через файлы.

Только терминальный способ, потому что мне эти команды нужно будет включить в скрипт.

Спасибо.
« Последнее редактирование: 28 Апреля 2013, 11:10:46 от iw2snl »

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
у вайна реестр храниться в простом текстовом файле. его можно седом спокойно редактировать из скрипта.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Таким образом появляются две новые проблемы :
1) Понять sed
2) Понять формат system.reg user.reg файла :) .

Эх...
Ну видел же ещё способ :) . Который напрямую редактирует нужный ключ...

Пока он не появится, поучу конечно...
Но до сих пор этот sed я как-то избегал. Он всегда был в компании reg exp-ов, если не ошибаюсь. И я всегда находил способы решать свои проблемы другими средствами, более простыми. Просто потому что я хочу понимать, что происходить, а не вырисовывать крякозябры оО...
Здесь-то эти reg exp-ы не нужны оО ?
« Последнее редактирование: 26 Апреля 2013, 20:47:44 от iw2snl »

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
кинь строчки соответствующие нужным тебе ключам в реестре.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
[Software\\Wine\\Explorer] 1366991655
"Desktop"="%Имя стола%"

Кажется, эти оО . (Во всяком случае, менял значение, работает)

566 и 567 строки.

По сути только вторая строка и есть нужный ключ (567)
« Последнее редактирование: 26 Апреля 2013, 21:05:14 от iw2snl »

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Код: (bash) [Выделить]
sed -i '/\[Software\\\\Wine\\\\Explorer\].*/{n; s/.*/"Desktop"="2"/}' ~/.wine/user.regесли интересно, могу расписать как оно работает.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Ну... Интересно, куда я денусь ) . Всё равно рано или поздно придётся осиливать эти регэкспы :) .

Используя то немногое, что я успел прочесть, это
Редактировать файл - проверить, если строка совпадает с [Software]\\Wine\\Explorer , где почти каждый слэш экранирующий - много цифр поглощающий glob - крякозябры - Двойка, которую я заменю на нужное мне название - путь к .reg файлу (ну, просто потому что у меня патченный вайн, да и для каждой программы я зачем-то делаю отдельные префиксы, а ~/.wine-каталог по-умолчанию заблокирован :) )
« Последнее редактирование: 26 Апреля 2013, 21:42:08 от iw2snl »

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
из самого интересного
-i - записывать в файл из которого и считывается текст
сама регулярка - совпадение со строкой ([Software\\\\Wine\\\\Explorer\].*) (цифры опустил, заменив любыми символами, ибо не знаю меняются они или нет), после чего перейти на следующую строку (n), и заменить (s) полностью всю строчку (.*) на "Desktop"="2".
путь к файлу - дело вкуса и конкретных настроек :)
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Цитировать
-i - записывать в файл из которого и считывается текст
Это, значит, понял правильно...

Цитировать
[Software\\\\Wine\\\\Explorer\].*)
Это тоже...
Только где четыре бэкслэша, должно быть два :) . Просто поочерёдно с экранирующими. Квадратные скобки тоже надо экранировать, как я понял из команды.

Но не понял, почему перед glob (*) должна стоять точка. :)

Цитировать
после чего перейти на следующую строку (n), и заменить (s) полностью всю строчку (.*) на "Desktop"="2".
При этом сами команды обрамляются в фигурные скобки, ибо много, разделяются точками с запятой. При этом команда замены имеет в вид s/что нужно заменить/на что нужно заменить/

Так-то я понял как работает в этом конкретном случае.
Но опять не понял, почему перед глобом точка :) . Это особенность sed ?

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
точка - любой символ, * - повторять предыдущий символ сколько угодно раз. потому и ставиться .* для того чтоб попадали любые символы.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Понял :) . Особенность sed. Вместо * - ., которую нужно повторять.

Спасибо. Поставлю галочку "Решено". Хотя если найду способ редактировать реестр собственно самим regedit-ом через консоль, выложу сюда.
« Последнее редактирование: 28 Апреля 2013, 01:08:45 от iw2snl »

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Проблема оказалась не совсем решённой. Настройки вступают в силу далеко не сразу. Только после того, как "умрут" все процессы wine-а.
Просто потому что сам по себе файл user.reg должен редактироваться только тогда, когда эти процессы собственно не запущены.

Может, подскажет всё-таки кто способ с прямым экспортированием ключа в реестр. Вдруг в этом случае реакция будет быстрее о_О. (тем не менее, sed - вещь хорошая...)
« Последнее редактирование: 28 Апреля 2013, 01:11:22 от iw2snl »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Выполняйте через экспорт-импорт .reg-файлов.

http://wiki.winehq.org/regedit
http://wine-wiki.org/index.php/Wine_Registry

Оффлайн iw2snl

  • Автор темы
  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
В общем, нашёл я то, что искал. На wiki WorldOfWarcraft причём.

В моём случае это команда
env WINEPREFIX=%Путь к префиксу% %путь к бинарнику wine% reg add HKCU\\Software\\Wine\\Explorer /v Desktop /t reg_sz /d EmuDesktop

Почему-то достаточно неосвещённая функция. Возможно, потому что по запросу wine reg все выпадает что-то связанное с wine regedit foo.reg.
Мана не нашёл, пришлось ориентироваться на всплывающие help-ы.

Нужная команда, которая изменяет ключ без импорта-экспорта .reg файлов (ну не тру :) ):
wine reg [add | delete | query ]
Если ввести $wine reg комманда /? Получим ещё один help по команде, а именно синтаксис.

$wine reg add /?
REG ADD имя_раздела [/v имя_параметра | /ve] [/t тип] [/s разделитель] [/d значение] [/f]
Добавляет или изменяет значение.
Можно использовать в виде
REG ADD имя_разделаДля создания раздела. (потому как все параметры в квадратных скобках опциональны ? :) )

$wine reg delete /?
REG DELETE имя_раздела [/v имя_параметра | /ve | /va] [/f]
Удаляет ключ, раздел...

$wine red query /?
REG QUERY имя_раздела [/v имя_параметра | /ve] [/s]
Что бы это команда не делала... Моё понимание параметров внизу.

имя_раздела укороченное, например, HKCU\\Software для HKEY_CURRENT_USER\\Software .
/ve изменяет параметр "(по-умолчанию)". В команде reg delete вводит пустую строку.
/va задействует все параметры.(в команда reg delete удаляет все ключи в разделе, ключ "(по-умолчанию)" сбрасывает)
/t типы - REG_[sz|binary|dword|multi_sz|expand_sz] , соответственно строковый, двоичный, dword, многостроковой и вычисляемый строковой. Например, reg_sz - строковое значение.

Как пользоваться разделителями, я ещё не понял.
/f Что-то изменяет, что именно я тоже не понял ) . Если записать в reg add, выхлоп будет содержать в конце "1" вместо "0". В остальных не проверял.
Во всяком случае, вряд ли кому-то понадобятся эти параметры.
« Последнее редактирование: 28 Апреля 2013, 10:13:06 от iw2snl »

Оффлайн Airvikar

  • Участник
  • *
  • Сообщений: 192
    • Просмотр профиля
    • Установка игр в Ubuntu

Только терминальный способ, потому что мне эти команды нужно будет включить в скрипт.


Все гораздо проще :)
В скрипте делал так:
#!/bin/bash
echo "[HKEY_CURRENT_USER\Software\Wine\Explorer\Desktops]" > $HOME/temp/explorer.reg
echo "\"Default\"=\"1280x720\"" >> $HOME/temp/explorer.reg
env WINEPREFIX="$HOME/.wine" sh /usr/bin/regedit $HOME/temp/explorer.reg
rm -R $HOME/temp/explorer.reg
только пропишите свои пути/значения
« Последнее редактирование: 28 Апреля 2013, 10:01:31 от Airvikar »
"Мы с мамкой взяли два билета, ниче не выиграли, так лучше бы нашему Мишке расческу купили."
                                                                            Бурлакова Фрося®

 

Страница сгенерирована за 0.018 секунд. Запросов: 19.