Як можна маніпулювати бібліотеками Windows 7 за допомогою групової політики?


11

Я намагаюся додати та видалити місцеположення бібліотеки з "Бібліотеки" для Windows 7 для кожного мого користувача.

Хоча це легко зробити з робочого столу та легко відключити бібліотеки, що з’являються в провіднику, як я можу додати або видалити розташування з розташування бібліотеки (наприклад, видалити c: \ users \ public \ документи з бібліотеки документів користувача)?

Мені не потрібно "заблокувати" їхній список бібліотек, я радий, що вони можуть додавати та видаляти свої власні місця за своїм бажанням, але я хочу контролювати початкові місця, які вони пропонують.


Додано це запитання та відповідь, щоб документувати щось, що мені було важко вирішити, щоб воно могло допомогти іншим. Мені все ще дуже цікаво почути про будь-які інші методи, особливо простіші, які я пропустив!
Роб Моїр

Відповіді:


11

Бібліотеки Windows 7 - це фактично лише файли XML, які керують ними. Всі вони називаються [Library_Name] .library-ms (Eg Pictures.library-ms) і їх можна відкрити в будь-якому текстовому редакторі, наприклад блокноті, шляхом перетягування та опускання.

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

Є кілька речей, які я виявив, про що вам слід знати:

  • XML зберігає інформацію про користувача, який використовує файл бібліотеки

  • Windows автоматично оновлює / перезаписує XML, коли ви двічі клацніть на ньому / маніпулюєте ним. Це особливо проблематично для адміністратора, коли подвійне клацання зробить ваш файл непридатним для користувачів

  • Якщо зробити файл лише для читання, це призведе до того, що бібліотека видасться лише прочитаною, тому не дасть змоги користувачам зберігати їх.

Після деяких проб і помилок я розробив кілька «порожніх» шаблонів, використовуючи бібліотеки за замовчуванням, які я публікую нижче.

Для налаштування нових місцеположень за замовчуванням ви можете використовувати наступне відоме керівництво папок:

http://msdn.microsoft.com/en-us/library/bb882665.aspx

І я знайшов корисні посилання на архітектуру бібліотеки:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd798389(v=vs.85).aspx http://msdn.microsoft.com/en-us/magazine/dd861346.aspx

По суті, спосіб, який мені найкраще було експериментувати, - це просто внести зміни за допомогою графічного інтерфейсу та вивчити, що змінюється.

Документи

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <name>@shell32.dll,-34575</name>
  <version>20</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[false]]></property>
  </propertyStore>
  <searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isDefaultNonOwnerSaveLocation>true</isDefaultNonOwnerSaveLocation>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>knownfolder:{FDD39AD0-238F-46AF-ADB4-6C85480369C7}</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>

Музика

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <name>@shell32.dll,-34584</name>
  <version>12</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1004</iconReference>
  <templateInfo>
    <folderType>{94d6ddcc-4a68-4175-a374-bd584a510b78}</folderType>
  </templateInfo>
  <propertyStore>
    <property name="HasModifiedLocations" type="boolean"><![CDATA[false]]></property>
  </propertyStore>
  <searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isDefaultNonOwnerSaveLocation>true</isDefaultNonOwnerSaveLocation>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>knownfolder:{4BD8D571-6D19-48D3-BE97-422220080E43}</url>
        </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>

Картинки

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <name>@shell32.dll,-34595</name>
  <ownerSID></ownerSID>
  <version>6</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1003</iconReference>
  <templateInfo>
    <folderType>{b3690e58-e961-423b-b687-386ebfd83239}</folderType>
  </templateInfo>
  <propertyStore>
    <property name="HasModifiedLocations" type="boolean"><![CDATA[false]]></property>
  </propertyStore>
  <searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isDefaultNonOwnerSaveLocation>true</isDefaultNonOwnerSaveLocation>
      <isSupported>false</isSupported>
      <simpleLocation>
        <url>knownfolder:{33E28130-4E1E-4676-835A-98395C3BC3BB}</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>

Відео

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <name>@shell32.dll,-34620</name>
  <ownerSID></ownerSID>
  <version>4</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1005</iconReference>
  <templateInfo>
    <folderType>{5fa96407-7e77-483c-ac93-691d05850de8}</folderType>
  </templateInfo>
  <propertyStore>
    <property name="HasModifiedLocations" type="boolean"><![CDATA[false]]></property>
  </propertyStore>
  <searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isDefaultNonOwnerSaveLocation>true</isDefaultNonOwnerSaveLocation>
      <isSupported>false</isSupported>
      <simpleLocation>
        <url>knownfolder:{18989B1D-99B5-455B-841C-AB7C74E4DDFC}</url>
       </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>

2
Для тих, хто цікавиться, де вони зберігаються, їх можна знайти під%APPDATA%\Microsoft\Windows\Libraries
Agent_9191

Приємним оновленням буде спосіб спрямування бібліотеки на мережеву поділку:, \\server\%username%\documentsі \\server\%username%\musicт. Д., Але вона працюватиме незалежно від того, який користувач увійде в систему.
Joel Coel

7

Єдиний метод, який я знайшов, - це використання розширень Powershell для бібліотек Windows 7, доступних у кодеплексі тут .

Це може бути використано в скрипті для входу (його потрібно запустити для кожного користувача, в їх контексті), і він включає методи додавання та видалення місцеположень бібліотеки.

Зразок коду

Import-Module "\\myserver\location\Windows7Library\Windows7Library.psm1"
# Before we can use the new commands from this module, it needs to be imported.

add-LibraryFolder -LibraryPath (Get-KnownFolder "VideosLibrary").path -FolderPath "\\borehamwood\dvds"
# add location to video library
#
Remove-LibraryFolder -LibraryPath (Get-KnownFolder "DocumentsLibrary").path -FolderPath "C:\users\Public\Documents"
Remove-LibraryFolder -LibraryPath (Get-KnownFolder "MusicLibrary").path -FolderPath "C:\users\Public\Music"
# remove locations from both the documents, and then the music library.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.