¿Cómo puedo manipular las bibliotecas de Windows 7 a través de la directiva de grupo?


11

Estoy tratando de agregar y eliminar ubicaciones de Biblioteca de las ubicaciones de "Biblioteca" de Windows 7 para cada uno de mis usuarios.

Si bien es fácil hacer esto desde el escritorio y es fácil deshabilitar las bibliotecas que aparecen en el explorador, ¿cómo puedo agregar o eliminar ubicaciones de una ubicación de biblioteca (por ejemplo, eliminar c: \ users \ public \ documents de la biblioteca de documentos del usuario)?

No necesito 'bloquear' su lista de ubicaciones de biblioteca, estoy feliz de que agreguen y eliminen sus propias ubicaciones como lo deseen, pero quiero controlar las ubicaciones iniciales que se les ofrecen.


Agregué esta pregunta y respuesta para documentar algo que encontré difícil de resolver, para que pueda ayudar a otros. ¡Todavía estoy muy interesado en conocer otros métodos, especialmente los más fáciles, que me he perdido!
Rob Moir

Respuestas:


11

Las bibliotecas de Windows 7 en realidad son solo archivos XML con algunas extensiones de shell inteligentes que las administran. Todos se llaman [Library_Name] .library-ms (por ejemplo, Pictures.library-ms) y se pueden abrir en cualquier editor de texto, como el bloc de notas, arrastrando y soltando.

Los archivos se pueden publicar utilizando cualquier mecanismo normal: scripts, preferencias de directiva de grupo, etc.

Descubrí un par de cosas que debes tener en cuenta:

  • El XML almacena información sobre el usuario que usa el archivo de biblioteca

  • Windows actualizará / sobrescribirá automáticamente el XML cuando haga doble clic en él / lo manipule. Esto es especialmente problemático como administrador donde hacer doble clic hará que su archivo sea inutilizable para los usuarios

  • Si hace que el archivo sea de solo lectura, esto tendrá el efecto de hacer que la biblioteca parezca de solo lectura, evitando así que los usuarios guarden.

Después de algunas pruebas y errores, desarrollé algunas plantillas 'en blanco' usando las bibliotecas predeterminadas que publicaré a continuación.

Puede usar la siguiente guía de carpetas conocidas para personalizar nuevas ubicaciones predeterminadas:

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

Y he encontrado que las siguientes referencias son útiles con respecto a la arquitectura de la biblioteca:

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

Esencialmente, sin embargo, la mejor manera de experimentar fue simplemente hacer cambios usando la GUI y examinar lo que ha cambiado.

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>

Imágenes

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

Videos

<?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 aquellos que se preguntan dónde están almacenados, se pueden encontrar en%APPDATA%\Microsoft\Windows\Libraries
Agente_9191

Una actualización agradable sería una manera de señalar una biblioteca a un recurso compartido de red: \\server\%username%\documents, \\server\%username%\music, etc, mientras que funcionará sin importar qué usuario se conecta.
Joel Coel

7

El único método que he encontrado es utilizar las extensiones de Windows 7 Powershell para bibliotecas, disponibles en codeplex aquí .

Esto se puede utilizar en un script de inicio de sesión (debe ejecutarse para cada usuario, en su contexto) e incluye métodos para agregar y eliminar ubicaciones de la biblioteca.

Código de muestra

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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.