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

Batch file 将快捷方式(.lnk)固定到“开始”菜单,batch-file,cmd,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

我目前正在使用.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\op渣\op渣.lnk
添加到“开始”菜单中。

我以前看到过这样的帖子: ,但我不能让它工作

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

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


我希望有人能帮助我将
op渣.lnk
锁定到“开始”菜单,最好使用两种语言(丹麦语和英语)

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

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

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

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

在另一次搜索中,我偶然发现了一个非常有用的VBScript::


脚本列出了特定程序的所有
动词,在本例中为计算器。不幸的是,my
op渣.lnk
中的动词“Pin to Start Menu”没有列出,因此我认为动词不能实现这一点。希望其他人有其他想法

在另一次搜索中,我偶然发现了一个非常有用的VBScript::


脚本列出了特定程序的所有
动词,在本例中为计算器。不幸的是,my
op渣.lnk
中的动词“Pin to Start Menu”没有列出,因此我认为动词不能实现这一点。希望其他人有其他想法

我在当前配置文件中使用了.vbs来执行此操作(并在所有(新)用户配置文件上使用注册表runonce来启动.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

我在当前配置文件中使用了.vbs来实现这一点(并在所有(新的)用户配置文件上使用注册表runonce来启动.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

看看这个==>看看这个==>我不能简单地将
op渣.lnk
文件放到开始菜单文件夹中,让它出现在开始菜单中。我可以通过将
op渣.lnk
文件放到这个文件夹中,使它出现在开始菜单下的“所有程序”中:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
我不能简单地将
op渣.lnk
文件放到开始菜单文件夹中,使它出现在开始菜单中。我可以通过将
op渣.lnk
文件拖放到此文件夹中,使其出现在“开始”菜单下的“所有程序”中:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs