我指的是我们可以设置的底部图标,也可以单击以启动该程序的新实例或将其打开的窗口带入主视图。
我假设在注册表的某个地方可能有一些条目链接到图像图标以及它所代表的程序的存储位置。
我想知道这一点,这样我就可以在另一台机器上轻松地预设这些,而不是手动设置它们。
答案1
有关“开始”屏幕和任务栏上固定项目的信息存储在以下键中:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{...}\Count
和
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TaskBand
不幸的是,所有密钥值都是加密的二进制块,因此您无法直接编辑它们。此外,没有组策略来控制它。微软故意这样做是为了阻止应用程序供应商将他们的垃圾软件钉在您面前。我觉得这个借口很可笑,因为它根本不能阻止不正当的程序员行为,但是做让您履行合法的管理职能变得十分痛苦。
以编程方式修改任务栏需要您编写一个脚本,模拟右键单击“开始”菜单上的项目并点击“从任务栏固定/取消固定”,如下所示:
Dim objShellApp
Dim objWMI
Dim objVerb
Dim objScreen
Dim objProcess
Dim colVerbs
Dim colScreens
Dim colProcesses
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set objShellApp = CreateObject("Shell.Application")
Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
'Remove Windows Media Player from Taskbar
If objFS.FileExists(objShell.SpecialFolders("AllUsersPrograms") & "\Windows Media Player.lnk") Then
Set colVerbs = objShellApp.Namespace(objShell.SpecialFolders("AllUsersPrograms")).ParseName("Windows Media Player.lnk").Verbs
For Each objVerb in colVerbs
If objVerb.Name = "Unpin from Tas&kbar" Then
objVerb.DoIt
Exit For
End If
Next
End If
'Add Microsoft Outlook to Taskbar
If objFS.FileExists(objShell.SpecialFolders("AllUsersPrograms") & "\Microsoft Office\Microsoft Outlook 2010.lnk") Then
Set colVerbs = objShellApp.Namespace(objShell.SpecialFolders("AllUsersPrograms") & "\Microsoft Office").ParseName("Microsoft Outlook 2010.lnk").Verbs
For Each objVerb in colVerbs
If objVerb.Name = "Pin to Tas&kbar" Then
objVerb.DoIt
Exit For
End If
Next
End If
修改脚本,使其适合您想要固定/取消固定的任何项目。您需要在每个用户登录的上下文中运行此脚本。您无法批量执行此操作。因此,您必须将此脚本转储到每个用户注册表配置单元中的 RunOnce 注册表项中。
或者,您可以在脚本文件末尾添加一行,使其在完成后自杀,并将其放在每个用户的启动文件夹中(包括默认用户,以便在新用户登录时应用)。
objFS.DeleteFile WScript.ScriptFullName
无论哪种方式,您都不想将其放入所有用户配置文件中。您需要确保它运行只有一次对于每个人在他们自己的用户环境中并且永远不会再次运行它(以免破坏他们的定制)。