Как я могу управлять библиотеками Windows 7 через групповую политику?

11

Я пытаюсь добавить и удалить местоположения библиотек из расположений Windows 7 «Библиотеки» для каждого из моих пользователей.

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

Мне не нужно «блокировать» их список библиотек, я рад, что они могут добавлять и удалять свои собственные местоположения по своему желанию, но я хочу контролировать первоначальные местоположения, которые им предлагаются.

Роб Моир
источник
Добавил этот вопрос и ответ к документу, который мне было трудно решить, чтобы он мог помочь другим. Мне все еще очень интересно услышать о любых других методах, особенно более простых, которые я пропустил!
Роб Мойр
1
Также смотрите: blogs.msdn.com/b/oldnewthing/archive/2012/08/28/10343980.aspx
Zoredache

Ответы:

11

Библиотеки Windows 7 - это на самом деле просто файлы XML с некоторыми умными расширениями оболочки, управляющими ими. Все они называются [Library_Name] .library-ms (например, 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т. Д., При этом она будет работать независимо от того, какой пользователь входит в систему.
Джоэль Коэль
7

Единственный метод, который я нашел, - это использовать расширения Windows 7 Powershell для библиотек, доступные в codeplex здесь .

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

Образец кода

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.
Роб Моир
источник