PDA

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


lunat
05-04-2005, 22:38
Народ, подскажите как решить следующую проблему:
У меня в панели задач языковая панель прилипла вплотную к панели быстрого запуска и теперь если какое-либо открытое окно хочешь сбросить в панель задач, то оно улитает в никуда, т.е. промежуток между языковой панелью и панелью быстрого запуска в который сбрасываются открытые окна исчез. А если в свойствах панели убрать галочки с панели быстрого запуска и языковой панели, то вся панель задач вместе с кнопкой ПУСК исчезает, приходится подымать её через панель правления. Раньше спасался с помощью восстановления по контрольной точке, но теперь контрольной точки тоже не оказалось...Ось ХРsp1+sp2, AMD Athlon(tm)XP 2000+, 1,67ГГц, 512МБ ОЗУ,NVIDIA GeForce4 MX440 128Мб. Раньше стоял XPsp2 интегрированный, такой беды не возникало, но на неё дрова сканера становились криво, поэтому пришлось вернуться к более старому варианту. Кстати такая проблема возникала и раньше в разных вариантах sp1 и чистого ХР, причём ставились с различных установочных дисков. Если кто знает как решается проблема опишите поподробней. Заранее благодарен.

aESThete
06-04-2005, 10:14
как вариант поиграть с высотой панели задач: сделать пошире, отрегулировать размеры, сузить
можно попробовать вытащить языковую на рабочий стол, потом обратно в панель задач.
метод научного тыка, однако... (у меня вобще отключена, стоит Punto :))
Успехов.

lunat
06-04-2005, 14:20
Спасибо за ответ, но всё выше изложенное я испробовал, и даже больше, но этот номер тоже не проходит.
Думаю проблема решается через реестр, но как незнаю... :weep:

VladimirET
08-04-2005, 23:30
У меня возникла такая же проблема.
Но общие впечатления немного другие:
Панель задач состоит из 1) Кнопки пуск 2) Трея 3) Панелей по выбору пользователя.

В принципе - все панели опциональны (языковая, быстрого запуска), кроме одной - панели со списком задач. Так вот мне кажется, что она была просто закрыта (убрана) какой-то программой (а может и просто в результате некорректного завершения работы explorer.exe)
Более того, у меня это всё происходит в контексте пользователя с ограниченными правами (не админ), а следовательно это исключительно настройки данного пользователя.

Экспериментальным путём доказано, что дело не в файлах профиля (создавал новый профиль,и перекидывал все файлы, кроме ntuser.dat, и всё исправляется).
Отсюда вывод: дело в настройках, находящихся в пользовательской ветви реестра, а конкретно в конфигурации explorer-а (ведь он же вроде за эту панель отвечает).

Я думаю, что если не полениться, то наверняка можно найти конкретный ключ в пользовательской ветви реестра, исправление которого и решит проблему. (сравнивая реестр из свежесозданного профиля и реестр повреждённого)

Ginger
09-04-2005, 00:47
если убрать Lock the taskbar то появляются места регулировки ширины частей панели.
можно их подвигать и выбрать понравившийся результат.
не знаю точно, пытались вы это сделать или нет (вы не обьясняете), но попытайтесь

Ginger
09-04-2005, 00:55
в реестре експлорер для данного юзера настраивается в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer

в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
есть ключи по поводу таскбара.
но конкретней ничего сказать не могу. не пробовала.

lunat
09-04-2005, 01:22
Спасибо за советы, попробую. :)

VladimirET
09-04-2005, 11:21
to Ginger
если убрать Lock the taskbar то появляются места регулировки ширины частей панели.
можно их подвигать и выбрать понравившийся результат.
Дело в том, что панели со списком задач просто нет среди остальных. Как двигать-то если схватить её не за что?

И насчёт реестра - на первый взгляд ничего необычного (или явно неправильного) в этой ветке нету. Сейчас займусь сравнением этой ветви с аналогичной у другого юзера.

VladimirET
09-04-2005, 12:05
Экспортировал я эту ветку. И ужаснулся. 11 Mb текста - сравнивать это с чем-либо ещё затруднительно (та же ветка из нового профиля этого же пользователя весит в тексте всего 1.5 Mb)

Тогда я попытался внести эти 1.5 Mb в старый (повреждённый профиль) - эффекта никакого. Точнее эффект конечно есть, но не там, где надо - видно, что изменились настройки эксплорера, но Списка задач по-прежнему нет.

В связи с этим вопрос: можно ли исключить эту ветку из дальнейшего поиска? Ведь там была (и осталась) часть данных, которой нету в новом профиле.

VladimirET
09-04-2005, 18:49
Оказалось, что исключать эту ветвь нельзя. После её удаления всё пришло в норму (но! удалять надо с выгруженным профилем данного пользователя - иначе при выходе из системы explorer вернёт текущие настройки в реестр!!!).

При дальнейшем поиске (удаление половины => logoff => login) нашёлся и конкретный ключ.
[HKEY_USERS\{USER_SID}\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\TaskBarWinX P]
(вместо {USER_SID} у вас должен находиться SID данного пользователя)

это бинарное значение, которое (видимо) содержит конфигурацию панели задач!

Проблема лечится удалением этого ключа с выгруженным профилем пользователя, которого лечим

Таким образом остаётся всего 2 вопроса:
1) Кто виноват? Кто (и как?) или что могло изменить это значение.
2) Какова структура этого ключа? Поиск в google дал незначительные результаты: пару исходников, которые, меняя вполне конкретный байт этого ключа добиваются желаемого изменения конфигурации панелей.

Единственное чем неудобно удаление,так это тем, что сбивается конфигурация панелей. Поэтому хотелось бы знать структуру данного ключа.

Vadikan
09-04-2005, 23:57
VladimirET
Изменения в HKEY_CURRENT_USER (HKCU) надо вносить, тогда и в <SID> они внесутся. SID профили - это профили всех пользователей на машине, но вносить в них изменения неправильно. Когда вы входите в систему, то ваш SID профиль загружается в HKCU.

Vadikan
10-04-2005, 00:00
Из готовой, но не опубликованной статьи для сайта автоматической установки виндовс.

==========
О ветвях реестра и способах импортирования ключей

Читая сообщения в конференциях MSFN и OSZone, я пришел к выводу, что некоторые участники неверно интерпертируют назначение ветвей реестра. Думаю, что не помешает небольшое разъяснение. Я не буду вдаваться в подробности, а лишь обрисую основы применительно к автоматической установке системы. Для общего образования я рекомендую ознакомиться со статьей MS KB Описание реестра Microsoft Windows http://support.microsoft.com/kb/256986/ru . Теперь конкретнее о ветвях.

HKEY_LOCAL_MACHINE (HKLM)

Название само по себе информативно: ключи локальной машины. Изменения, которые вы вносите в эту ветку, применяются ко всем учетным записям. Tаким образом, отключив какую-нибудь службу, вы делаете ее недоступной для всех пользователей. Во время автоматической установки Windows лучше всего импортировать HKLM ключи при первом входе в систему, после загрузки оболочки. "Ага!", скажете вы, "Значит можно и раньше?" Можно (об этом ниже), но не нужно. Некоторые HKLM ключи не срабатывают на более раннем этапе.

Типичным способом импортирования ключей является пакетный файл, запускаемый из [GuiRunOnce]. Файл содержит такую команду

ECHO.
ECHO Applying Registry Tweaks...
REGEDIT /S %systemdrive%\install\hklm.reg

HKEY_CURRENT_USER (HKCU)

Опять же, название говорит само за себя: ключи текущего пользователя. В принципе, изменения, которые вы вносите в эту ветку, применяются только к учетной записи, из-под которой делаются изменения. Безусловно, HKCU ключи можно импортировать при первом входе в систему. Если вы работаете из-под встроенной учетной записи Администратор, так, наверное, и следует делать. Я, однако, предпочитаю работать из-под другой учетной записи с правами администратора, оставляя встроенного Администратора на всякий случай нетронутым. Если во время автоустановки первым вход в систему осуществит Администратор, то к его учетной записи все HKCU твики и применятся, а остальные учетные записи останутся ненастроенными.

К счастью, для тех, кто работает более чем с одной учетной записью есть обходной путь. Во время автоматической установки вы можете импортировать ключи на этапе, когда ни один из пользователей еще не вошел в систему. Делается это из файла cmdlines.txt. Такой способ особенно полезен тем, что HKCU ключи фактически импортируются в настройки пользователя по умолчанию (Default User), чья ветвь реестра подключается вместо HKCU во время автоматической установки Windows. Таким образом, все ключи, импортированные в HKCU применяются ко всем учетным записям создаваемым впоследствии. Теперь понятно, почему у меня два раздельных файла твиков реестра для HKLM и HKCU? Сколько бы я пользователей не создавал впоследствии, у всех у них интерфейс уже будет максимально настроен (в соответствии с моими предпочтениями :)

Для импортирования HKCU ключей из cmdlines.txt достаточно разместить файл hkcu.reg в корне директории $ОEМ$ и добавить в cmdlines.txt следующие строки:

[Commands]
"REGEDIT /S hkcu.reg"


HKEY_CLASSES_ROOT (HKCR)

Я не буду дублировать весьма подробное описание этой ветви реестра, данное в статье МS KB. Ознакомьтесь с ним самостоятельно. Я его интерпретирую следующим образом. Если вы хотите, чтобы изменения затронули всех пользователей (включая будущих), то либо импортируйте HKCR ключи вместе с HKCU из cmdlines.txt, либо импортируйте ключи в раздел HKEY_LOCAL_MACHINE\Software\Classes при первом входе в систему.

HKEY_USERS (HKU)

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

HKEY_USERS\.DEFAULT

Я обратил внимание, что участники конференций MSFN и OSZone пытаются использовать этот ключ для импортирования HKCU твиков, рассчитывая применить их ко всем пользователям. Не исключаю, что в некоторых случаях это сработает. Однако, вы уже знаете как это сделать правильнее и надежнее. Более того, HKEY_USERS\.DEFAULT скорее относится к настройкам, регулирующим процессы до входа пользователя в систему (например, раскладка клавиатуры по умолчанию).

HKEY_USERS\S-[длинный-набор-цифр]

Таких ключей может быть несколько. Это зависит от количества пользователей, когда-либо входивших в систему. Если вы попробуете отследить установку какого-нибудь приложения с помощью программ, мониторящих изменения в реестре, то вероятно увидите, что как раз в один из этих ключей вносятся изменения. Это и есть ваш профиль. С практической точки зрения этот ключ неинтересен, т.к. длинный набор цифр уникален для каждой системы, и в новой системе он будет уже другим. Фактически, такие изменения равносильны изменениям в HKCU.

Надеюсь этот небольшой экскурс в реестр будет вам полезен.
============

VladimirET
10-04-2005, 11:49
Vadikan
Изменения в HKEY_CURRENT_USER (HKCU) надо вносить, тогда и в <SID> они внесутся. SID профили - это профили всех пользователей на машине, но вносить в них изменения неправильно. Когда вы входите в систему, то ваш SID профиль загружается в HKCU.

Наверное я недостаточно полно изложил свою мысль.

Дело в том, что в данном случае действительно нельзя вносить изменения в HKCU. Проблема состоит в том, что если активный пользователь будет изменять свой HKCU, то во время выхода из системы (logoff) настройки explorer-а, находящиеся до этого в памяти, сохранятся в реестр. А те изменения, что мы внесли в HKCU таким образом просто исчезнут.

Я не вижу другого выхода, кроме как войти в систему другим пользователем, и изменить реестр проблемного пользователя.
Здесь есть 2 варианта:
1) Проблемный пользователь ещё не входил в систему после последней перезагрузки. В этом случае его ветвь реестра ещё не смонтирована в HKU\<SID>, и следовательно его файл ntuser.dat ещё не занят процессом system. В этом случае мы можем вручную (с помощью regedit) смонтировать его куда угодно и, внеся необходимые изменения, размонтировать.
2) Проблемный пользователь уже входил в систему. В этом случае процесс system уже смонтировал ntuser.dat этого пользователя в HKU\<SID> и менять нужно именно там (ведь смонтировать эту ветку куда-либо ещё мы не сможем, так как файл уже открыт).

Vadikan
11-04-2005, 08:23
VladimirETПроблема состоит в том, что если активный пользователь будет изменять свой HKCU, то во время выхода из системы (logoff) настройки explorer-а, находящиеся до этого в памяти, сохранятся в реестр. А те изменения, что мы внесли в HKCU таким образом просто исчезнут.Чушь какая-то. Изменения в HKCU исчезать не должны. И explorer в памяти тут совершенно не причем. Если такое действительно происходит, то система вообще не может нормально функционировать. Надо восстанавливать или переустанавливать систему.

Если вы все же хотите войти в систему другим пользователем, и изменить реестр проблемного пользователято надо либо из рабочего либо из дефолтного профиля загрузить куст и произвести изменения. Эта статья подробно все описывает http://www.simplify-i-t.com/guides/guide1.htm

Возможно, что лучше даже скопировать весь профиль целиком. Копирование данных из поврежденного профиля пользователя в новый профиль (http://support.microsoft.com/kb/811151/ru)

VladimirET
11-04-2005, 19:40
Vadikan
Если вы все же хотитевойти в систему другим пользователем, и изменить реестр проблемного пользователя
то надо либо из рабочего либо из дефолтного профиля загрузить куст и произвести изменения.
Это и есть тот метод, который я предлагаю - причём он работает!
Чушь какая-то.
Не чушь - а проверенный факт (даже на свежеустановленной на VMWare системе).

Механизм тут, насколько я понимаю, таков:
1) Пользователь входит в систему (аутентификация)
2) Загружается explorer.exe и все остальные программы пользователя из автозапуска (а также список автозапуска в HKLM и HKCU)
3) Когда explorer.exe загружается, он считывает свои настройки из HKCU (в том числе и настройки taskbar-а)
4) Пользователь работает в системе со своими настройками (в это время не происходит ни одного считывания настроек explorer-а, если это не было запрошено отдельно)
5) Пользователь выходит из системы. Во время этого этапа и сохраняются все изменения, в том числе и конфигурация taskbar-а.


Теперь представим, что произойдёт, если пользователь изменит конфигурацию taskbar-а в HKCU во время этапа 4:
1) Естественно эти настройки не повлияют на текущий сеанс - их для этого надо считать, а для этого надо перегрузить explorer.exe.
2) Во время 5-ого этапа explorer сохранит свою текущую конфигурацию в HKCU - в то же самое место, куда пользователь внёс своё значение. То есть просто запишет поверх него.

Конечно есть такие настройки, что вносятся сразу после изменения (например отображать-ли часы в трее), но не все настройки такие - некоторые вносятся во время завершения работы приложения.

Vadikan
11-04-2005, 21:56
VladimirETВо время 5-ого этапа explorer сохранит свою текущую конфигурацию в HKCU - в то же самое место, куда пользователь внёс своё значение. То есть просто запишет поверх него.Совершенно неправильно. Изменения внесенные в HKCU там и остаются и ничего Explorer не перезаписывает. Простой пример. Правый клик на панели задач. Если у вас панель задач не закреплена замените цифру выделенную красным на 0
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V TaskbarSizeMove /t REG_DWORD /D 1 /f
taskkill /im explorer.exe /f
start explorer.exeСохраните как taskbar.cmd и запустите. Теперь правый клик на панели задач снова. Что-нибудь изменилось? Должно. Так что ничего explorer не перезаписывает. Не чушь - а проверенный факт (даже на свежеустановленной на VMWare системе).У вас, вероятно, дистрибутив кривой, если так все работает. Вы можете, впрочем, оставаться при своем мнении, основанном на криво работающей системе.

VladimirET
11-04-2005, 23:21
Vadikan
Совершенно неправильно. Изменения внесенные в HKCU там и остаются и ничего Explorer не перезаписывает.
Занятно... Я действительно был не прав: в общем случае такого не происходит.
Видимо наткнулся на исключение и ошибочно обобщил...

Но вопрос всё равно висит в воздухе - с тем ключом про который я говорю:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\TaskBarWinXP]
всё действительно именно так, как я и говорил.

То есть: если после его изменения (или даже удаления) активным пользователем сделать logoff+logon, то старое значение будет на месте!

С [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarSizeMove] такого не происходит: я действительно могу на него повлиять прямым изменением.

С другой стороны если изменить [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\TaskBarWinXP], а после сделать taskkill /im explorer.exe /f
start explorer.exeто изменение сохраняется
(например после удаления на панели задач остаётся только панель со списком задач, пропадает панель быстрого запуска и остальные)

Тогда в чём особенность этого ключа? Почему при logoff/logon он сохраняется старым???

Кривизна дистрибутива исключается (хотя бы в этой теме) - аналогичный эффект имеет место с Windows Server 2003 SP1

Vadikan
12-04-2005, 04:27
VladimirET
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop]
"TaskbarWinXP"=hex:<у каждого свой>
отвечает за панель быстрого запуска. AFAIK, за ее наличие и размер. Я не знаю, как его изменить напрямую. По кр. мере именно этот ключ я импортирую во время установки Windows из cmdlines.txt. Предварительно панель конфигурирую через GUI.

VladimirET
12-04-2005, 16:24
Vadikan
Я тоже нигде не нашёл, какова его структура, и не могу отредактировать его.
Но при этом я могу заменить его на другой (заведомо корректный), полученный изменениями через GUI, или вовсе удалить (через HKCU). Если теперь выйти из системы и войти снова, то там окажется старое значение. Чем это можно объяснить???

отвечает за панель быстрого запуска. AFAIK, за ее наличие и размер
Кстати, насколько я понял - он отвечает не только за неё, но и за остальные панели в панели задач.




© OSzone.net 2001-2012