Como posso manipular as bibliotecas do Windows 7 por meio da Diretiva de Grupo?


11

Estou tentando adicionar e remover locais da Biblioteca dos locais "Biblioteca" do Windows 7 para cada um dos meus usuários.

Embora seja fácil fazer isso na área de trabalho e fácil desativar as bibliotecas que aparecem no explorer, como posso adicionar ou remover locais de um local da biblioteca (por exemplo, remova c: \ users \ public \ documents da biblioteca de documentos do usuário)?

Não preciso 'bloquear' a lista de locais da biblioteca, fico feliz por adicionar e remover os próprios locais como desejarem, mas desejo controlar os locais iniciais que são oferecidos.


Adicionamos esta pergunta e resposta para documentar algo que achei difícil de resolver, para que pudesse ajudar outras pessoas. Ainda estou muito interessado em ouvir sobre outros métodos, especialmente os mais fáceis, que perdi!
— Rob Moir

Respostas:


11

As bibliotecas do Windows 7 são na verdade apenas arquivos XML, com algumas extensões de shell inteligentes que os gerenciam. Todos eles são chamados [Library_Name] .library-ms (por exemplo, Pictures.library-ms) e podem ser abertos em qualquer editor de texto, como o bloco de notas, arrastando e soltando.

Os arquivos podem ser publicados usando qualquer mecanismo normal - scripts, Preferências de Diretiva de Grupo etc.

Descobri algumas coisas que você deve saber:

  • O XML armazena informações sobre o usuário que está usando o arquivo de biblioteca

  • O Windows atualizará / substituirá automaticamente o XML quando você clicar duas vezes nele / manipulá-lo. Isso é especialmente problemático como administrador, em que o clique duplo tornará seu arquivo inutilizável para os usuários.

  • Se você tornar o arquivo somente leitura, isso fará com que a biblioteca pareça somente leitura, impedindo que os usuários salvem.

Após algumas tentativas e erros, desenvolvi alguns modelos "em branco" usando as Bibliotecas padrão que publicarei abaixo.

Você pode usar o seguinte guia de pastas conhecidas para personalizar novos locais padrão:

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

E eu achei as seguintes referências úteis sobre a arquitetura da biblioteca:

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

Essencialmente, porém, a maneira que achei melhor para experimentar foi simplesmente fazer alterações usando a GUI e examinar o que foi alterado.

Documentos

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

Música

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

As fotos

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

Vídeos

<?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
Para aqueles que se perguntam onde estão armazenados, eles podem ser encontrados em #%APPDATA%\Microsoft\Windows\Libraries
— Agent_9191 8/12/12

A atualização agradável seria uma maneira de apontar uma biblioteca para um compartilhamento de rede: \\server\%username%\documents, \\server\%username%\music, etc, enquanto ele vai trabalhar, não importa qual usuário efetuar login.
— Joel Coel

7

O único método que encontrei é usar as extensões do Windows 7 Powershell para bibliotecas, disponíveis no codeplex aqui .

Isso pode ser usado em um script de logon (ele precisa ser executado para cada usuário, em seu contexto) e inclui métodos para adicionar e remover locais da biblioteca.

Código de amostra

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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.