我正在尝试为每个用户从Windows 7的“库”位置中添加和删除库位置。
虽然可以轻松地从桌面执行此操作,并且可以轻松禁用资源管理器中显示的库,但如何从库位置添加或删除位置(例如,从用户的文档库中删除c:\ users \ public \ documents)?
我不需要“锁定”他们的图书馆位置列表,我很高兴他们可以根据需要添加和删除他们自己的位置,但是我想控制他们提供的初始位置。
我正在尝试为每个用户从Windows 7的“库”位置中添加和删除库位置。
虽然可以轻松地从桌面执行此操作,并且可以轻松禁用资源管理器中显示的库,但如何从库位置添加或删除位置(例如,从用户的文档库中删除c:\ users \ public \ documents)?
我不需要“锁定”他们的图书馆位置列表,我很高兴他们可以根据需要添加和删除他们自己的位置,但是我想控制他们提供的初始位置。
Answers:
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>
%APPDATA%\Microsoft\Windows\Libraries
\\server\%username%\documents
,\\server\%username%\music
,等,而将工作无论哪个用户登录英寸
我发现的唯一方法是使用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.