我试图从Windows 7的“库”位置为每个用户添加和删除库位置。
虽然它很容易从桌面上做到这一点,并容易禁用资源pipe理器出现在资源pipe理器中,我怎么能添加或删除库位置的位置(例如从用户的文档库中删除c:\用户\公共\文件)?
我不需要“locking”他们的图书馆位置列表,我很高兴他们添加和删除他们自己的位置,但我想控制他们提供的初始位置。
Windows 7库实际上只是XML文件,有一些巧妙的shell扩展pipe理它们。 它们都被称为[Library_Name] .library-ms(例如Pictures.library-ms),并且可以在任何文本编辑器(如记事本)中通过拖放来打开。
然后可以使用任何正常的机制 – 脚本,组策略首选项等来发布这些文件。
我发现了几件事,你应该知道:
XML存储有关使用库文件的用户的信息
当你双击/操纵它时,Windows将自动更新/覆盖XML。 作为pipe理员,双击会使用户无法使用文件,这尤其成问题
如果将文件设置为只读,则会使库出现只读,从而阻止用户保存。
经过一些试验和错误之后,我开发了一些使用默认库的“空白”模板,我将在后面进行介绍。
您可以使用以下已知文件夹指南来自定义新的默认位置:
http://msdn.microsoft.com/en-us/library/bb882665.aspx
我发现以下是有关库架构的有用参考资料:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd798389(v=vs.85).aspx http://msdn.microsoft.com/en-us/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>
我发现唯一的方法是使用库中的Windows 7 Powershell扩展,可从codeplex 在这里 。
这可以在login脚本中使用(它需要在每个用户的上下文中运行),还包括添加和删除库位置的方法。
示例代码
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.