如何通过组策略操作Windows 7库?


11

我正在尝试为每个用户从Windows 7的“库”位置中添加和删除库位置。

虽然可以轻松地从桌面执行此操作,并且可以轻松禁用资源管理器中显示的库,但如何从库位置添加或删除位置(例如,从用户的文档库中删除c:\ users \ public \ documents)?

我不需要“锁定”他们的图书馆位置列表,我很高兴他们可以根据需要添加和删除他们自己的位置,但是我想控制他们提供的初始位置。


添加了此问题和答案以记录我发现难以解决的问题,以便对他人有所帮助。我仍然非常想听到我错过的任何其他方法,尤其是更简单的方法!
罗伯·摩尔

Answers:


11

Windows 7库实际上只是具有一些聪明的shell扩展管理它们的XML文件。它们全称为[Library_Name] .library-ms(例如,Pictures.library-ms),可以通过拖放操作在任何文本编辑器(如记事本)中打开。

然后可以使用任何常规机制(脚本,组策略首选项等)发布文件。

我发现了几件事,您应该注意以下几点:

  • XML存储有关使用库文件的用户的信息

  • 当您双击XML /对其进行操作时,Windows将自动更新/覆盖XML。作为管理员,这尤其成问题,因为双击将使用户无法使用您的文件

  • 如果将文件设置为只读,则将具有使库显示为只读的效果,因此会阻止用户进行保存。

经过一番尝试和错误之后,我使用默认库(下面将在此发布)开发了一些“空白”模板。

您可以使用以下已知文件夹指南来自定义新的默认位置:

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

而且我发现以下内容是有关库体系结构的有用参考:

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

但是,从本质上讲,我发现最好的尝试方法是使用GUI进行更改并检查更改。

文件资料

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

一个很好的更新将是一个库指向网络共享的方式:\\server\%username%\documents\\server\%username%\music,等,而将工作无论哪个用户登录英寸
乔尔COEL

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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.