Jak manipulować bibliotekami systemu Windows 7 za pomocą zasad grupy?

11

Próbuję dodawać i usuwać lokalizacje bibliotek z lokalizacji „Biblioteka” systemu Windows 7 dla każdego z moich użytkowników.

Chociaż łatwo to zrobić z pulpitu i łatwo wyłączyć biblioteki pojawiające się w Eksploratorze, jak mogę dodawać lub usuwać lokalizacje z lokalizacji biblioteki (np. Usunąć c: \ users \ public \ dokumenty z biblioteki dokumentów użytkownika)?

Nie muszę „blokować” ich listy lokalizacji bibliotek, cieszę się, że dodają i usuwają własne lokalizacje, jak chcą, ale chcę kontrolować początkowe lokalizacje, które są oferowane.

Rob Moir
źródło
Dodałem to pytanie i odpowiedź, aby udokumentować coś, co było dla mnie trudne do rozwiązania, aby mogło pomóc innym. Nadal bardzo interesują mnie inne metody, zwłaszcza te łatwiejsze, których mi brakowało!
Rob Moir

Odpowiedzi:

11

Biblioteki Windows 7 to tak naprawdę tylko pliki XML z kilkoma sprytnymi rozszerzeniami powłoki zarządzającymi nimi. Wszystkie nazywają się [Library_Name] .library-ms (np. Pictures.library-ms) i można je otworzyć w dowolnym edytorze tekstów, takim jak notatnik, przeciągając i upuszczając.

Pliki można następnie opublikować przy użyciu dowolnego normalnego mechanizmu - skryptów, Preferencji zasad grupy itp.

Odkryłem kilka rzeczy, o których powinieneś wiedzieć:

  • XML przechowuje informacje o użytkowniku korzystającym z pliku biblioteki

  • Windows automatycznie zaktualizuje / nadpisze XML, gdy go dwukrotnie klikniesz / manipulujesz. Jest to szczególnie problematyczne dla administratora, gdzie podwójne kliknięcie sprawi, że plik nie będzie nadawał się do użytku przez użytkowników

  • Jeśli plik zostanie ustawiony tylko do odczytu, spowoduje to, że biblioteka będzie wyświetlana tylko do odczytu, co uniemożliwi użytkownikom zapisywanie.

Po kilku próbach i błędach opracowałem kilka „pustych” szablonów przy użyciu domyślnych bibliotek, które opublikuję poniżej.

Możesz użyć następującego przewodnika po znanych folderach, aby dostosować nowe domyślne lokalizacje:

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

I znalazłem następujące przydatne informacje dotyczące architektury biblioteki:

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

Zasadniczo jednak najlepszym sposobem na eksperymentowanie było po prostu wprowadzenie zmian za pomocą GUI i sprawdzenie, co się zmieniło.

Dokumenty

<?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>

Muzyka

<?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>

Kino

<?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>

Wideo

<?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>
Dan
źródło
2
Dla tych, którzy zastanawiają się, gdzie są przechowywane, można je znaleźć pod%APPDATA%\Microsoft\Windows\Libraries
Agent_9191
Aktualizacja miło byłoby sposobem wskazać bibliotekę w udziale sieciowym: \\server\%username%\documents, \\server\%username%\musicitp, a to będzie działać bez względu użytkownik loguje się.
Joel Coel
7

Jedyną metodą, jaką znalazłem, jest użycie rozszerzenia Windows 7 Powershell dla bibliotek, dostępnego z codeplex tutaj .

Można tego użyć w skrypcie logowania (musi być uruchamiany dla każdego użytkownika, w jego kontekście) i obejmuje metody dodawania i usuwania lokalizacji bibliotek.

Przykładowy kod

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.
Rob Moir
źródło