Rob*_*oir 11 windows group-policy
我正在尝试为我的每个用户从 Windows 7 的“库”位置添加和删除库位置。
虽然从桌面执行此操作很容易,并且很容易禁用资源管理器中出现的库,但如何从库位置添加或删除位置(例如,从用户的文档库中删除 c:\users\public\documents)?
我不需要“锁定”他们的图书馆位置列表,我很高兴他们可以根据需要添加和删除自己的位置,但我想控制提供给他们的初始位置。
Dan*_*Dan 11
Windows 7 库实际上只是 XML 文件,有一些巧妙的 shell 扩展来管理它们。它们都被称为 [Library_Name].library-ms(例如 Pictures.library-ms)并且可以通过拖放在任何文本编辑器(例如记事本)中打开。
然后可以使用任何正常机制发布文件 - 脚本、组策略首选项等。
我发现了一些事情,你应该知道:
XML 存储有关使用库文件的用户的信息
当您双击/操作它时,Windows 将自动更新/覆盖 XML。作为管理员,这尤其成问题,双击将使用户无法使用您的文件
如果您将文件设为只读,则会导致库显示为只读,从而阻止用户保存。
经过反复试验,我使用我将在下面发布的默认库开发了一些“空白”模板。
您可以使用以下已知文件夹指南来自定义新的默认位置:
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>
Run Code Online (Sandbox Code Playgroud)
音乐
<?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>
Run Code Online (Sandbox Code Playgroud)
图片
<?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>
Run Code Online (Sandbox Code Playgroud)
视频
<?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>
Run Code Online (Sandbox Code Playgroud)
我发现的唯一方法是使用适用于库的 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.
Run Code Online (Sandbox Code Playgroud)