Страница 1 из 1

Внесение данных в реестр на Win7 х64

Добавлено: Пн янв 18, 2010 13:42
spacekon
Запускаю из под TC 7.50a на Win7 х64 reg-файл следующего содержания:

Windows Registry Editor Version 5.00

;Чтобы открывались chm-файлы справки по сети
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001

;Просто для теста
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"123"=dword:00000001


но значения в реестр не вносятся, хотя появляется окно, что данные успешно занесены в реестр! :shock:

Работаю под локальным администратором, TC запускал как от имени админа, так и просто. Самое интересное, что если этот reg-файл запустить через проводник, то все нормально вносится в реестр!

На Win7 х32 тоже все нормально работает.

Что за беда? :?:

[mod="Avada"]Заголовок темы уточнил, иначе она рискует превратиться в свалку: внесение данных в реестр много к чему относится.[/mod]

Добавлено: Пн янв 18, 2010 14:24
Rodny
spacekon
Цитаты с другого форума и про другую программу. Но смысл понятен:
BakLAN писал(а):У меня ХР х64 и я уже давно заметил, что при помощи Reg-файлов почему-то не во все ветки реестра можно добавить записи. При помощи консольной утилиты REG добавляется через раз.
GORA2 писал(а):reg файл создается в папке программы и потом запускается, видимо, cmd (мелькает консольное окно), возможно из него запускается regedit, но дело в том, что в х64 существуют два cmd.exe и два regedit.exe. Каждый из них запускается из своей "среды". Если запуск происходит из х64 приложения, то вызывается х64 версия cmd и/или regedit и доступ к этой ветке реестра есть. Проверить, какая версия regedit запущена, можно, посмотрев на процессы в диспетчере, у 32х разрядных будет добавлена метка *32.
Если reg файл, который был приведен на прошлой странице, запустить двойным кликом из ТС (32х разрядное приложение), то информация в реестр не попадает, а если по этому же файлу кликнуть из Проводника (64х разрядное приложение), то информация в реестр попадает.

Добавлено: Пн янв 18, 2010 15:34
spacekon
Rodny писал(а):Цитаты с другого форума и про другую программу. Но смысл понятен:
Так что же, это же каждый раз в TC надо правой кнопкой на reg-файл, выбирать X64 =>Открыть с помощью... : Редактор реестр ???

Жутко неудобно и каждый раз перед запуском reg-файл надо об этом помнить! :(

И просвета в этом вопросе, как я понимаю не предвидется, поскольку TC x64 не будет... :cry:

Добавлено: Пн янв 18, 2010 16:03
Rodny
spacekon
Не знаю, есть ли в этом смысл. А что, если настроить внутреннюю ассоциацию для открытия *.reg в regedit.exe x64 ...

Добавлено: Пн янв 18, 2010 16:10
CaptainFlint
spacekon
Раз система 64-битная, помнить об этом придётся в любом случае. Думаю, Тотал — не единственная 32-битная программа на компе.

Упростить себе жизнь можно при помощи внутренних ассоциаций или дополнительных кнопок. Конкретно с regedit надо отдельно разбираться, система его как-то хитро редиректит. Можно скопировать Проводником (ну или Тоталом с временно выключенным редиректом) файл C:\WINDOWS\regedit.exe в, скажем, C:\WINDOWS\regedit64.exe, а после этого в Тотале создать ассоциацию для REG-файлов на этот regedit64.exe. Но надо иметь в виду, что некоторые ветки реестра тоже виртуализованы, и что REG-файл может быть рассчитан только на 32-битные системы. Если такой файл импортировать в реестр без виртуализации, то 32-битные программы не увидят изменений. В общем, с каждым случаем придётся разбираться отдельно. Так повелела Microsoft.

Rodny писал(а):А что, если настроить внутреннюю ассоциацию для открытия *.reg в regedit.exe x64
Не знаю, как в Семёрке, у меня на XP x64 regedit.exe сидит в C:\Windows и является 64-битным, но когда к нему пытается обратиться 32-битная программа, винда подсовывает ему C:\Windows\SysWOW64\regedit.exe (32-битный). Получается, одним лишь каталогом system32 редирект не ограничивается. Поэтому я написал выше про копирование.

Добавлено: Сб янв 23, 2010 16:05
MVV
Вообще, информация-то в реестр попадает, но нужно учитывать, что папка Software для 32-битных программ отделена от общей папки Software и расположена в ее подпапке Wow6432Node, и подставляется вместо оригинальной при обращении. Т.е. из 32-битной программы запускается 32-битный редактор реестра, и изменения вносятся только в разделы, доступные 32-битным программам.

При необходимости запустить именно 64-битный редактор реестра нужно прописывать полный путь к нему (сейчас у меня не 64-битная винда, поэтому точно сказать не могу, но помню точно, что мог запускать прямо из ТК regedit, имеющий доступ к 64-битным записям, указывая полный путь к файлу - нужно попробовать запустить C:\Windows\regedit.exe).

Это точно как и с папкой System32 в 64-битной винде - когда вы обращаетесь к ней из 32-битной программы, система подставляет на самом деле вместо папки System32 папку SysWOW64. Свои мысли на эту тему я писал тут (не сочтите за рекламу ресурса). Чтобы понять, та ли это папка, надо поискать в ней то, чего нет в 32-битной папке (например, в папке System32 это подпапка drivers с драйверами, а в реестре в Software - то, чего нет в ключе Software\Wow6432Node - в 32-битном редакторе реестра можно бесконечно входить в подключ Wow6432Node.

Добавлено: Сб янв 23, 2010 17:25
CaptainFlint
MVV писал(а):нужно попробовать запустить C:\Windows\regedit.exe
Не поможет. Этот путь редиректится, как я написал выше, и подсовывается 32-битная версия regedit.exe. Единственным способом является либо временное отключение редиректа в Тотале, либо предварительное копирование файла regedit.exe.

Добавлено: Вс янв 24, 2010 09:18
ask-rus
Мне нужно Total Commander прописать в реестре...
У кого-нибудь случаем не завалялся reg по этому поводу?
Задать реестру местоположение TC для работы с утилитой tc2mp. (%TOTAL COMMANDER%)

Добавлено: Вс янв 24, 2010 11:13
Avada
ackep
Поиск по форуму рулит. Например, вот. А также (в TCKB) здесь и здесь. А также утилита TCDir (тоже упоминалась на форуме — см. , например, здесь и здесь).
В данной теме этот конкретный вопрос больше не обсуждаем (прошу обратить внимание, что заголовок темы уточнён).

Добавлено: Ср янв 27, 2010 18:42
MVV
CaptainFlint писал(а):
MVV писал(а):нужно попробовать запустить C:\Windows\regedit.exe
Не поможет. Этот путь редиректится, как я написал выше, и подсовывается 32-битная версия regedit.exe. Единственным способом является либо временное отключение редиректа в Тотале, либо предварительное копирование файла regedit.exe.
Дело в том, что когда я с этим экспериментировал, никакой редирект я не отключал, и точно помню, что запускался 64-битный regedit, когда я прописывал полный путь к файлу - но я сейчас не могу сказать точно, к какому именно - нужно пробовать на 64-битной системе (по идее, это должен быть C:\Windows\System32\regedit.exe).

Добавлено: Ср янв 27, 2010 19:13
CaptainFlint
MVV писал(а):Дело в том, что когда я с этим экспериментировал, никакой редирект я не отключал, и точно помню, что запускался 64-битный regedit, когда я прописывал полный путь к файлу - но я сейчас не могу сказать точно, к какому именно - нужно пробовать на 64-битной системе (по идее, это должен быть C:\Windows\System32\regedit.exe).
Я тоже думал, что он должен быть там. Однако его там нет. Сейчас проверил на двух 64-битных системах — XP и Win7, результаты такие:

XP:
64-битная версия файла располагается в C:\Windows\regedit.exe, 32-битная — в C:\WINDOWS\SysWOW64\regedit.exe. Файла C:\WINDOWS\System32\regedit.exe не существует. При любых обращениях к C:\Windows\regedit.exe с неотключённым редиректом Тотал получает 32-битную версию (в том числе, при запуске); с отключённым редиректом — 64-битную.

Win7:
Так же, как в XP, 64-битная версия файла располагается в C:\Windows\regedit.exe, 32-битная — в C:\WINDOWS\SysWOW64\regedit.exe. Файла C:\WINDOWS\System32\regedit.exe не существует. Однако в отличие от XP, здесь обращения к 64-битной версии не редиректятся.

Получается, зря я поверил Microsoft'у, когда прочитал у них, что regedit.exe редиректится независимо от системы…

Добавлено: Ср янв 27, 2010 19:59
MVV
Ну вот оно примерно так и есть. Я на висте экспериментировал, а XP 64-битную в глаза никогда не видел.

В любом случае, простейший junction на папку System32 полностью избавляет от проблем доступа к 64-битным файлам. :)

Вот только в реестре подобных инструментов нет... и нужно понимать, что запуская рег-файл из 32-битной среды сработать он может не так, как ожидается.

Добавлено: Чт сен 13, 2012 00:31
Aoeu_H
решил проблему установив внутренние ассоциации: рег файл запускается через "c:\windows\explorer.exe"