将快捷方式(.lnk)固定到开始菜单

时间:2015-07-05 15:33:53

标签: batch-file cmd

我目前正在使用.cmd文件制作安装脚本。 这是我的代码:

IF EXIST "%USERPROFILE%\Desktop\Opslag\Opslag.hta" (

START "" "%USERPROFILE%\Desktop\Opslag\Opslag.lnk" /secondary /minimized
MSG "%USERNAME%" The program is already installed.
EXIT

) ELSE (

XCOPY %SOURCE% %DESTINATION% /D /E /C /R /I /K /Y
START "" "%USERPROFILE%\Desktop\Opslag\Opslag.lnk" /secondary /minimized
MSG "%USERNAME%" Setup is complete!
EXIT
)

脚本中先前设置了%SOURCE%%DESTINATION%

复制文件夹后,我希望将文件%USERPROFILE%\Desktop\Opslag\Opslag.lnk添加到“开始”菜单。

我之前看过的帖子如下: How to pin to start menu using PowerShell,但我无法使其发挥作用。

我目前正在家用笔记本电脑上测试它,该笔记本电脑使用丹麦语运行Windows 7。我需要这样做的机器运行Windows 7英语。因此我认为$verb与我找到的脚本不同,但我没有在我的工作站上测试过。

此外,我的工作站的UAC非常有限, 因此我没有管理员权限。请不要评论用户不应该这样做,而只评论管理员/ IT,因为我知道我在做什么。

我希望有人可以帮助我将Opslag.lnk固定到开始菜单,最好是两种语言(丹麦语和英语)。

3 个答案:

答案 0 :(得分:0)

找到“开始菜单”文件夹的位置:

For /f "tokens=3*" %%G in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Start Menu" ^|Find "REG_"') do Call Set _startmenu=%%H
echo %_startmenu%
pause

答案 1 :(得分:0)

在另一次搜索中,我偶然发现了一个非常有用的VBScript:http://blogs.technet.com/b/deploymentguys/archive/2009/04/08/pin-items-to-the-start-menu-or-windows-7-taskbar-via-script.aspx

Const CSIDL_COMMON_PROGRAMS = &H17 
Const CSIDL_PROGRAMS = &H2 
Set objShell = CreateObject("Shell.Application") 
Set objAllUsersProgramsFolder = objShell.NameSpace(CSIDL_COMMON_PROGRAMS) 
strAllUsersProgramsPath = objAllUsersProgramsFolder.Self.Path 
Set objFolder = objShell.Namespace(strAllUsersProgramsPath & "\Accessories") 
Set objFolderItem = objFolder.ParseName("Calculator.lnk") 
Set colVerbs = objFolderItem.Verbs 
For Each objVerb in colVerbs 
    Wscript.Echo objVerb 
Next

脚本列出​​了特定程序的verbs,在本例中为计算器。遗憾的是,Opslag.lnk中的动词“Pin to Start Menu”未列出,因此我认为这不能用动词来完成。希望其他人有其他想法。

答案 2 :(得分:0)

我使用.vbs在当前配置文件中执行此操作(并使用注册表,runonce在所有(新)userprofiles上启动.vbs)。我们正在使用我们公司的荷兰语和英语设备,因此您将看到它将尝试两种语言。问题是它无法在.lnk上运行,但您始终可以创建一个引用您所需目的地的exe。

Dim strFolder, strExecutable
Set objShell = CreateObject("Shell.Application")

strFolder = "C:\Tools"
strExecutable = "Tool.exe"

Set objFolder = objShell.Namespace(strFolder)
Set objFolderItem = objFolder.ParseName(strExecutable)

Set colVerbs = objFolderItem.Verbs

'Loop through the verbs and if PIN is found then 'DoIt' (execute)
blnOptionFound = False
For Each objVerb In colVerbs
   If Replace(objVerb.name, "&", "") = "Aan het menu Start vastmaken" Then
      objVerb.DoIt
      blnOptionFound = True
   End If
Next

For Each objVerb In colVerbs
   If Replace(objVerb.name, "&", "") = "Pin to Start Menu" Then
      objVerb.DoIt
      blnOptionFound = True
   End If
Next