PDA

Показать полную графическую версию : [решено] Почему параметры реестра импортируются в раздел WOW6432Node


loveaboveall
01-12-2010, 14:48
Столкнулся с интересной проблемой при попытке скрыть пользователя в windows 7.
Выполнение reg файла содержания

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"USERNAME"=dword:00000000

приводит к тому что запись добавляется в следующую ветку

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

пользователь при этом не скрывается.

из этой темы >> http://forum.oszone.net/archive/index.php/t-114079.html
ясно что такое WOW6432Node
но что делать, если reg файл добавляет запись не в ту ветку? как это исправить?

PS запись в reg файле верная.

Vadikan
01-12-2010, 15:47
из этой темы >> http://forum.oszone.net/archive/index.php/t-114079.html
ясно что такое WOW6432Node »
Там есть ссылка http://support.microsoft.com/kb/305097 , объясняющая запуск 64-разрядного редактора реестра. А в нем попробуйте Файл - Импорт и выберите REG-файл.

loveaboveall
01-12-2010, 16:25
Все дело в автоматизации.
А в нем попробуйте Файл - Импорт и выберите REG-файл.
тогда проще вручную зайти в нужную ветку и вручную добавить.

Смысл в том, чтобы запустить файл и он автоматически добавил в нужное место. Должно быть какое-то разделение в командах, что ли, как-то указать ОС выбирать куда будет добавление, 32 или 64 битную версию, может быть
как то в первой строчке файла

Windows Registry Editor Version 5.00

не знаю...

Пробовал в косоле - таже ерунда. Например так, создаю bat файл с таким содержанием:

@echo off
chcp 1251
net user USER1 123 /add
net localgroup Administrators USER1 /ADD
set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList"
REG ADD %key% /v USER1 /t REG_DWORD /d 0 /f

при выполнении его создается пользователь USER1 с паролем 123
а вот запись в реестр попадает в ветку WOW6432Node.

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

PS еще одна интересность. Вначале этот reg файл у меня работал и добавлялось правильно, а потом внезапно стал добавлять в ветку WOW6432Node. Это меня и удивило.

Morpheus
01-12-2010, 20:18
Протестил :)
При добавлении из 32-битной программы, например из
C:\Windows\SysWOW64\cmd.exe
---
file.reg
regedit /s file.reg
%systemroot%\syswow64\regedit /s file.reg
пишется в
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

При добавлении из 64-битной программы, например из
C:\Windows\System32\cmd.exe
---
file.reg
regedit /s file.reg
пишется в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
а
%systemroot%\syswow64\regedit /s file.reg
в
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

Vadikan
01-12-2010, 22:08
Morpheus, спасибо за тестирование :)

Все дело в автоматизации. »
Это немного другой подтекст... А откуда команда запускается? Если 32-разрядного приложения, то понятна причина.

Morpheus
02-12-2010, 00:24
Vadikan, вэлкам :)
Опыты продолжились. Делаем батник с текстом:
regedit /s "путь\file.reg"
и выполняем его из 32-битной
C:\Windows\SysWOW64\cmd.exe
"C:\Windows\System32\cmd.exe" /c "путь\file.bat"
- добавляется в WOW6432Node.
Т.е. она остаётся 64-разрядной до тех пор, пока выполняется из 64-разрядной среды.
[hr]
Ок, вытаскиваем cmd.exe из System32, переименовываем в cmd64.exe и кладём в C:\Windows.
Вызываем из 32-битной cmd
cmd64 /c "путь\file.bat"
- добавляется в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
Boa Soft был прав.
P.S. При запуске есть ошибки:
Не удается найти текст сообщения с номером 0x2350 в файле сообщений Application.
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
Не удается найти текст сообщения с номером 0x8 в файле сообщений System.
но всё работает.

Vadikan
02-12-2010, 00:52
Morpheus, получается, что командная строка и редактор реестра в 64-разрядной ОС выполняются в 32-разрядной среде :)

Morpheus
02-12-2010, 01:02
Vadikan, :dont-know уже и не знаю чего думать :)

loveaboveall
02-12-2010, 11:15
Просто есть какой-то нюанс интересный с этим вопросом. Дело в том, что я делал так. Открываю блокнот, добавляю туда строки

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"USERNAME"=dword:00000000

и батник. Запускаю батник - проверяю - добавился пользователь. Запуская reg файл - проверяю да все норм, запись добавилась куда нужно. Перезагружаюсь проверяю. Все норм. Еще раз перезагружаюсь - опять все норм. Пробую подключится к ОС под пользователем - получается. Вывод - все работает.

Далее самое интересное. Удаляю пользователя вручную. Удаляю запись из реестра. Прошел день. Я пробую снова этот bat файл и reg файл. И опа - запись уже идет в WOW6432Node. ОС таже.
Странная какае-то избирательность (((

Morpheus
02-12-2010, 11:26
Я пробую снова этот bat файл »
Двойным щелчком или откуда-то?

loveaboveall
02-12-2010, 11:32
Из Total commandera. Также запускал и впервый раз из этого же TOTAL cocmandera. Но тогда сработало, а в последующих случаях уже нет. Наверно скорее всего и первый раз не должно было сработать, наверно что-то заглючило.

Я открываю реестр смотрю наличие записи и ничего нет. Сначала я подумал, что reg файл просто не работает, но ведь сообщение то выдалось что команда успешно прошла. Сделал поиск по реестру и нашел свою запись в ветке WOW6432Node. Это меня сильно удивило, с чего вдруг ведь путь то прописан. Ну и далее уже начал читать что это за WOW6432Node такое и с чем его едят и так пришел на oszone.net

Morpheus
02-12-2010, 12:12
loveaboveall, не знаю, как там в тотале что устроено. Сходу находится
Total Commander 7.55a for Windows released!
...and various x64DisableRedirection problems.
http://www.ghisler.com/whatsnew.htm
У Вас версия свежая?

loveaboveall
05-12-2010, 13:23
7.50a 32bit

Morpheus
05-12-2010, 13:32
loveaboveall, попробуйте обновить. Total Commander 7.56 (http://soft.oszone.net/program/65/Total_Commander/)

amel27
16-01-2011, 12:24
вариант без переименования cmd.exe (источник (http://www.sql.ru/forum/actualthread.aspx?tid=782106)), код для батника:
subst z: %windir%\system32 & start "" z:cmd /c "путь\64.bat" & subst z: /d
код прямого запуска (из приложений):
cmd /c (subst z: %windir%\system32)&&(start "" z:cmd /c "путь\64.bat")&&(subst z: /d)

предполагается, что буква Z: свободна, что естественно для этапа установки, иначе нужно добавить код поиска свободной буквы диска

P.S. очевидно, метод основан на том факте, что NTFS-ссылки не могут быть каскадными

Vadikan
16-01-2011, 12:29
amel27, спасибо, интересный вариант, только мне проверить не на чем...

amel27
16-01-2011, 12:59
Vadikan, под рукой только Win2003 x64, на ней работает

Boa Soft
17-01-2011, 12:13
Не удается найти текст сообщения с номером 0x2350 в файле сообщений Application. (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены. Не удается найти текст сообщения с номером 0x8 в файле сообщений System. »

А если попробовать Mui с ссответствующем именем добавть?




© OSzone.net 2001-2012