Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как изменить библиотеки в Windows7? (http://forum.oszone.net/showthread.php?t=176814)

SvoiLudi 28-05-2010 21:44 1423207

Как изменить библиотеки в Windows7?
 
Как изменить библиотеки в Windows7?

Поменял местоположение папки МОИ ДОКУМЕНТЫ, а в библиотеках в проводнике показывается по-старому (с:\users). пробовал копировать файл библиотеки документов - не получается. но если нажать -ПУСК-ДОКУМЕНТЫ - показывает уже новое местоположение. то же самое по другим библиотекам.

Код:

rem Создаю папку МОИ ДОКУМЕНТЫ и другие папки md "V:\Мои Документы"  rem Копирую Документы, Рабочий Стол, Избранное... этого пользователя с раздела, где Windows, на раздел с документами Xcopy "%USERPROFILE%"\Favorites "v:\Избранное /v /f /e /h /y Xcopy "%USERPROFILE%"\"Documents" "v:\Мои Документы" /v /f /e /h /y  rem То же самое для Общей информации  md "V:\Общие\Общие Документы"  Xcopy "%PUBLIC%"\"Documents" "v:\Общие\Общие Документы" /v /f /e /h /y /s  rem Скроем исходные папки  attrib +h "%USERPROFILE%"\"Documents"  rem Настраиваем Windows на использование этих папок FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\32x.reg SET MyFlashDrive=%%d: copy "%MyFlashDrive%\Documents.library-ms" "v:\Библиотеки с Windows 7 и новее\Documents.library-ms" /v /y    For /F "Tokens=7 Delims=\" %%A In ('REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|find "S-1-5-21-"') Do (        REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\%%A" /v ProfileImagePath|Find /I "%username%" >nul&&Call :Func %%A&&GoTo :EOF ) Echo Профиль пользователя %ProfileName% не найден. GoTo :EOF  :Func :: Здесь пишем свои команды, SID передается в качестве параметра %1. Пример команды ниже Echo Профиль пользователя %ProfileName% найден, его SID - %1  REG ADD "HKEY_USERS\%1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v {1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE} /t REG_SZ /d "v:\Библиотеки с Windows 7 и новее" /f  REG ADD "HKEY_USERS\%1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" /t REG_SZ /d "v:\Мои Документы" /f    REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Documents" /t REG_SZ /d "v:\Общие\Общие Документы" /f  REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /f /v "Common Desktop" /t REG_EXPAND_SZ /d "v:\Общие\Общий Рабочий стол"  Set xOS=x86  If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64 rem if "%xOS%"=="x64" "%WINDIR%\regedit.exe" /s "%MyFlashDrive%\64x.reg"  if "%xOS%"=="x64" REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\explorer\Shell Folders" /v "Common Documents" /t REG_SZ /d "v:\Общие\Общие Документы" /f  if "%xOS%"=="x64" REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\explorer\User Shell Folders" /f /v "Common Documents" /t REG_EXPAND_SZ /d "v:\Общие\Общие Документы"

Vadikan 28-05-2010 21:57 1423217

Цитата:

Цитата SvoiLudi
Как изменить библиотеки в Windows7? »

Написано много кода, но не очень понятно, чего вы пытаетесь добиться. Опишите словами свою цель.

Библиотеки - это обычные XML файлы. Читайте материалы сайта Подробное руководство по использованию библиотек Windows 7

P.S. Вы не первый день на форуме, так что, пожалуйста, используйте тег code для оформления кода (см. в конце шапки темы http://forum.oszone.net/thread-140910.html)

SvoiLudi 28-05-2010 22:13 1423225

читал эту статью. поэтому скопировал xml-файл с библиотеками - нифига не работает. значит, что-то не так делаю. что?

SvoiLudi 30-05-2010 10:38 1423872

задача - переместить папку МОИ ДОКУМЕНТЫ - с диска C: на диск V:

цель - сохранить эту папку при восстановлении образа диска C:

Vadikan 30-05-2010 12:39 1423919

Цитата:

Цитата SvoiLudi
задача - переместить папку МОИ ДОКУМЕНТЫ - с диска C: на диск V: »

А, так вы уже десяток тем по этому вопросу создали...

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

[видео] Как быстро и грамотно переместить профили пользователей на другой раздел

P.S. Код оформите по правилам, больше просить не буду.

SvoiLudi 30-05-2010 14:04 1423957

а если уже стоит винда и нужно такое проделать?

Цитата:

Цитата Vadikan
Вам просто при установке нужно другой раздел для профилей указать с помощью файла ответов, и можно будет обойтись без кучи тем и скриптов.
Microsoft-Windows-Shell-Setup | FolderLocations | ProfilesDirectory
См. также http://support.microsoft.com/kb/929831 »

ВРОДЕ И ПОЛУЧАЮТСЯ ЗАТЕМ ПРОБЛЕМЫ, ЦИТИРУЮ:

Цитата:

Эти автоматической настройки имеют следующие известные проблемы: При использовании автоматической настройки FolderLocations для перемещения пользовательских данных или данных программы в другом месте, кроме папки% SystemDrive%, можно блокировать обновления для других версий Windows Vista или более поздних версий в Microsoft Windows. Если вы используете System Preparation Tool (Sysprep), чтобы применить FolderLocations автоматической настройки, некоторые переходы системной директории не указывают на новое местоположение цели. Следующие переходы каталог системы по-прежнему указывают на старых местах: C: \ Documents и Настройка продолжает указывать на C: \ Users. C: \ ProgramData \ Desktop продолжает указывать на C: \ Users \ Public \ Desktop. C: \ ProgramData \ Documents продолжает указывать на C: \ Users \ Public \ Documents. C: \ ProgramData \ Favorites продолжает указывать на C: \ Users \ Public \ Favorites. Если вы используете Windows Vista программа установки применяются FolderLocations автоматической настройки, переходов системной директории не указывают на новое местоположение цели. Следующие переходы каталог системы по-прежнему указывают на старых местах: C: \ Documents и Настройка продолжает указывать на C: \ Users. C: \ Users \ Default User продолжает указывать на C: \ Users \ Default. C: \ Users \ All Users продолжает указывать на C: \ ProgramData.
C: \ Users \ Имя_Пользователя\ Documents

и выдаётся в библиотеке ДОКУМЕНТЫ, хотя

C: \ Users \ Public \ Documents - не выдаётся (заменяется на v:\Общие\Общие Документы)

amel27 30-05-2010 14:18 1423966

Цитата:

Цитата SvoiLudi
задача - переместить папку МОИ ДОКУМЕНТЫ - с диска C: на диск V: »

разве только как пример управления библиотеками из CMD через ShLib и SLUtil
копирование/редирект "Документов" и "Избранного" текущего пользователя:
Код:

@Echo Off

Call :REDIR Personal "V:\Users\Admin\Documents" "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms"
Call :REDIR Favorites "V:\Users\Admin\Favorites"
Exit

:REDIR
::----------------------------------------
::%1- ID пользовательского каталога
::%2- новый путь к каталогу
::%3- путь к файлу библиотеки (опция)
::----------------------------------------
SetLocal
::--- пути ключей реестра ----------------
Set KEY_SHF=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Set KEY_USF=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Set KEY_SIW=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules
Set KEY_SIP=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\Sites\LocalHost\Paths
Set KEY_SIS=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\StartPages
::--- читаем текущий путь ----------------
For /F "Tokens=2* Delims=        " %%i In ('REG Query "%KEY_SHF%" /v %~1^|Find "REG_SZ"') Do Set $OLD=%%j
::--- создание/настройка целевой папки ---
If Not Exist "%~2" MD "%~2"
ATTRIB +R -H "%~2"& ATTRIB +H -R "%$OLD%"
ATTRIB -R -H -S "%$OLD%\desktop.ini"
COPY "%$OLD%\desktop.ini" "%~2" /Y
If Exist "%~2\desktop.ini" DEL /F/Q "%$OLD%\desktop.ini"
ATTRIB +R +H +S "%~2\desktop.ini"
::--- копирование содержимого ------------
XCOPY /S/K "%$OLD%\*" "%~2\"
::--- поиск параметров Windows Search ----
For /F "Delims=" %%i In ('REG Query "%KEY_SIW%" /s /f "file:///%$OLD%\\" /d /e^|Find /I "%KEY_SIW%"') Do Set SUB_SIW=%%i
For /F "Delims=" %%i In ('REG Query "%KEY_SIP%" /s /f "file:///%$OLD%\\" /d /e^|Find /I "%KEY_SIP%"') Do Set SUB_SIP=%%i
For /F "Delims=" %%i In ('REG Query "%KEY_SIS%" /s /f "%$OLD%\\" /d /e^|Find /I "%KEY_SIS%"') Do Set SUB_SIS=%%i
::--- замена параметров WindowsSearch ----
If Defined SUB_SIW REG ADD "%SUB_SIW%" /v URL /t REG_SZ /d "file:///%~2\\" /f
If Defined SUB_SIP REG ADD "%SUB_SIP%" /v URL /t REG_SZ /d "file:///%~2\\" /f
If Defined SUB_SIS REG ADD "%SUB_SIS%" /v URL /t REG_SZ /d "%~2\\" /f
::--- правим библиотеку ------------------
If Not "%~3"=="" ShLib Remove "%~3" "%$OLD%"
If Not "%~3"=="" ShLib Add "%~3" "%~2"
If Not "%~3"=="" ShLib SetSaveLoc "%~3" "%~2"
::--- вбиваем новый путь -----------------
REG ADD "%KEY_SHF%" /v "%~1" /t REG_SZ /d "%~2" /f
REG ADD "%KEY_USF%" /v "%~1" /t REG_EXPAND_SZ /d "%~2" /f
::----------------------------------------
EndLocal& GoTo :EOF

P.S. иногда могут возникать конфликты доступа при удалении пути из файла библиотеки

SvoiLudi 30-05-2010 14:56 1423991

я правильно понял?

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

Ваш код сработал!!!

amel27 30-05-2010 15:14 1424000

Цитата:

Цитата SvoiLudi
либо использовать предложенный Вами скрипт, либо одну из двух утилит »

скрипт - пример использования одной из утилит (ShLib)

SvoiLudi 30-05-2010 16:18 1424039

хочу заменить путь

"C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms"

на

v:\Библиотеки с Windows 7 и новее

как это сделать?

Цитата:

Цитата amel27
скрипт - пример использования одной из утилит (ShLib) »

т.е. эта утилита выдала такой скрипт?

не скачал ещё ни одной утилиты, а скрипт работает

amel27 30-05-2010 16:43 1424056

Цитата:

Цитата SvoiLudi
не скачал ещё ни одной утилиты, а скрипт работает »

без утилит только правка реестра, XML можно поправить только программно

Цитата:

Цитата SvoiLudi
хочу заменить путь »

SLUtil вроде может создавать библиотеки по нестандартным путям, удалите текущую библиотеку "Документы", создайте новую "v:\Библиотеки с Windows 7 и новее", добавьте в неё нужные каталоги...

FYI: Administratively Create and Modify Windows 7 Libraries

SvoiLudi 30-05-2010 18:39 1424107

Цитата:

Цитата amel27
без утилит только правка реестра, XML можно поправить только программно »

удивительно, но файл библиотеки документов имеет сегодняшнюю дату изменения

а внутри есть V - указание но новую папку
Код:

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <name>@shell32.dll,-34575</name>
  <ownerSID>S-1-5-21-351282624-4030952982-2499520814-1001</ownerSID>
  <version>22</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1002</iconReference>
  <templateInfo>
    <folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>
  </templateInfo>
  <propertyStore>
    <property name="HasModifiedLocations" type="boolean"><![CDATA[true]]></property>
  </propertyStore>
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>V:\¦Ю¦-TЙ¦¬¦¦\¦Ю¦-TЙ¦¬¦¦ ¦Ф¦-¦¦TГ¦-¦¦¦-TВTЛ</url>
        <serialized>MBAAAEAFCAAAAAAAADAAAAAAAY0gAAQBwAAAAArCot80XrcAc+xNPP91KHg4ydS93UtyBAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAgWAUAwHQB+TQDi66kGEiiNCAsCMw0ZGA8iV6wFAAAAAAAAAAAAAAAAAAAAAAAAAOBQMAAAAAAQi8AAWQAARCFER+FDAAgDAIAABA8uvJyDAYlIPAglKAAAABFAAAAAADAAAAAAAAAAAAAAAAAAAA4BBxQQSEgDB1QAAAYBArDQMAAAAAAgh80mGwAAMFVEO+FDAAwEAIAABA8uvJyDAYlIPDglKAAAAFFAAAAAADAAAAAAAAAAAAAAAAAAAA4BBxQQSEgDB1QAIAQBB+QgOEMEB8QQNE0DBCRwSEAAAWAQiAIAAOAw7+GAAUAwHQB+TQDi66kGEiiNCAsCMw0ZGA8iV6wFAAAAAAAAAAAAAAAAAAAAAAAAAOBQMAAAAAAQi8AAWQAARCFER+FDAAgDAIAABA8uvJyDAYlIPAglKAAAABFAAAAAADAAAAAAAAAAAAAAAAAAAA4BBxQQSEgDB1QAAAYBAAAgFAAAAhBAAAwBAAAQAAAAAcAAAAcEAAAAAAAAAgBAAAsCAAAwAAAAA5RAcyCBAAAARvtWdtVmb0lHItAC5r/PII3M1ODNzAbNyIDgV6wlzhnP6lzlzhnP6lDCxur+8sXe7yvPAAgCAAAQCAAAocAAAAEzUQNl4KilR8yEODtL/TMpJY2mzAAAAAAAAAAAYAAAADAAAgiFAAAAAAAAAx0yrqCAAAAAAAAAAAAAAAgEwxRbm5OWR86MQKw5/q/djxb3kJP03RMriIAwJAyS0IBcc0mZujVEvODkCc+v6f3Y82NZyD9dEzqICAcCgsENAAAAA</serialized>
      </simpleLocation>
    </searchConnectorDescription>
    <searchConnectorDescription>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>knownfolder:{FDD39AD0-238F-46AF-ADB4-6C85480369C7}</url>
        <serialized>MBAAAEAFCAAAAAAAADAAAAAAAY0gAAQBRAAAAcQt1NAOVrcA5wHnVgT1KHwemp8H4UtyBAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAA0IAUAwHQB+TQDi66kGEiiNCAsCMw0ZGA8iV6wFAAAAAAAAAAAAAAAAAAAAAAAAAeBQMAAAAAAgv84EWyAQN2ETN+FDAAgEAIAABA8uvTyzVN6LPOhlKAAAAmAAAAAAACAAAAAAAAAAAAAAAAAAAAwBB+QAOEACAUQgPEoDBDRAPEUDB9QgQEsEBAAgFAAAABCAAAwBAAAwAAAAAcAAAAgEAAAAVAAAA1BAAAwCAAAwAAAAA0Vc/4DBAAAwVp5GZvd3cg0CItXOIkv+/ggczU7M0MDs1IjMADpDXVNXZyNHXAAAAhAAAAIAAAAAFAAAAAAAAAAAACAAXcFTLPrMXVNXZyNHAxwFRvNWdtVmb0NHAgBAAAMAAAAKWAAAAAAAAAETLvqKAAAAAAAAAAAAAAAgbxQ3hjHHfDFbG6F/G9QrZTRBZPkTQfHRm+iAAnAILR7WM0d44xx3QxmhexvRP0a2UUQ2D5E03RkpvIAwJAyS0QAAAAUAAAAaBAAAALCAAAwBAAAwCAAAoQr509/4IvaUr0yWhINQaHvIAAAQlAAAAJAAAgmIAAAQMTB1UirIWGxLT4M0u8PxkmgZbO3GAAAABAAAAA8BAAAgLAAAATBQLAEDAtAQNA0CAyAQMA0CAzAQNAEDAyAAOAIDA2AgMAQDAtAANAADAzAAMAkDA1AgMAkDA4AgMA0CAyAANAkDA5AQNAIDAwAAOAEDA0AQLAEDAwAAMAEDAAAAAAAAAAAAAAAAAAAA</serialized>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>


SvoiLudi 30-05-2010 20:21 1424163

ведь винда откуда-то знает, что библиотеки на диске C

откуда? где хранится? как меняется?

SvoiLudi 30-05-2010 20:50 1424190

целиком профиль пользователя переносить не хочу по причинам:

1) полетел реестр пользователя; при восстановлении диска C из образа часть реестра, которая лежит в Windows - восстановится, а та часть, которая находится в папке пользователя - нет. и толку от восстановления из образа не будет

SvoiLudi 30-05-2010 21:06 1424206

где скачать ShLib.exe ?

amel27 31-05-2010 00:51 1424362

Цитата:

Цитата SvoiLudi
где скачать ShLib.exe ? »

по линку из поста #7

Iska 31-05-2010 00:55 1424363

Цитата:

Цитата SvoiLudi
где скачать ShLib.exe ? »

SvoiLudi, Вы пометили сообщение #7 как полезное. Прочтите же его ещё раз: коллега amel27 привёл там искомую ссылку.

P.S. Опоздал ;).

amel27 31-05-2010 03:14 1424405

Цитата:

Цитата SvoiLudi
удивительно, но файл библиотеки документов имеет сегодняшнюю дату изменения »

удивительно другое - похоже, что после правки ключей реестра Shell Folders/User Shell Folders система правит и XML, поэтому в скрипте я поставил вызов утилит ПЕРЕД правкой этих ключей (иначе возникает конфликт доступа)... кроме того, при правке XML добавляются некоторые пути поиска в "Windows Search", поэтому в скрипте вызов утилит стоит ПОСЛЕ правки ключей "Windows Search"

P.S. исследовать все эти зависимости глубже не хватило выходного... :)

SvoiLudi 07-09-2010 08:14 1490079

amel27, не могу понять принцип Вашего алгоритма. Не могли бы прокоментировать подробнее? Хотелось бы сделать такое для других пользовательских папок

amel27 15-09-2010 07:34 1495621

SvoiLudi,

- каждой библиотеке соответствует один вызов "CALL :REDIR список параметров";
- параметры описаны в начале процедуры :REDIR;
- по поводу алгоритма спрашивайте конкретно (какие строчки)

P.S. скрипт правит библиотеки только текущего пользователя


Время: 04:48.

Время: 04:48.
© OSzone.net 2001-