我安装了两个版本的程序,稳定版和测试版。每个版本的可执行文件名称都是共享的。
例如:
稳定版:C:/some/path/program.exe
测试版:C:/some/other/path/program.exe
两个可执行文件的快捷方式均已创建,并%APPDATA%\Microsoft\Windows\Start Menu\Programs
以不同的名称放置。
这应该意味着我可以在“开始”菜单中看到两个版本的快捷方式,但事实并非如此。相反,只有第一个快捷方式出现在列表中。将列表中缺少的快捷方式文件重命名为按字母顺序将其放在另一个之前的某个名称,会使它出现。
下面是另一个示例来帮助说明:
如果Start Menu\Programs
文件夹中存在这些内容:
Program.lnk
Program Beta.lnk
然后只有这一项会出现在“开始”中:
Program
然而
如果Start Menu\Programs
文件夹中存在这些内容:
Program.lnk
aaaProgram Beta.lnk
然后只有这个会出现在“开始”中,因为它按字母顺序排在另一个之前:
aaaProgram Beta
我的问题是,如何让两个快捷方式都出现在“开始”菜单中?
答案1
创建指向其中一个可执行文件的符号链接并赋予它不同的名称。
- 启动行政的命令提示符窗口(不是 PowerShell)。
- 输入
mklink /?
帮助。非常简单:
C:\Users\keith\Standalone Programs\DB Viewer\SQLiteDatabaseBrowserPortable>mklink /?
Creates a symbolic link.
MKLINK [[/D] | [/H] | [/J]] Link Target
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link Specifies the new symbolic link name.
Target Specifies the path (relative or absolute) that the new link
refers to.
- 我使用独立程序“SQLiteDatabaseBrowserPortable.exe”进行了测试:
C:\Users\keith\Standalone Programs\DB Viewer\SQLiteDatabaseBrowserPortable>mklink dbv.exe SQLiteDatabaseBrowserPortable.exe
然后在 shell:programs 下创建一个文件夹,其中包含两个可执行文件的快捷方式。两者都显示在“开始”菜单上: 不知道为什么第二个图标很奇怪但假设可以通过编辑快捷方式来覆盖它。
基思
编辑:这是格式化的 PowerShell 代码,用于根据目标路径搜索开始菜单快捷方式:
$wshShell = New-Object -ComObject wscript.shell
'StartMenu', 'AllUsersStartMenu' |
%{
gci "$($wshShell.SpecialFolders($_))\*.lnk" -recurse |
?{($wshShell.CreateShortcut($_.fullName)).TargetPath -match 'myprogram'} |
select fullname
}
编辑 2:这是原始的可执行文件和为“重命名”它而创建的符号链接:
C:\Users\keith\Standalone Programs\DB Viewer\SQLiteDatabaseBrowserPortable>dir *.exe
Volume in drive C is Windows
Volume Serial Number is F057-590D
Directory of C:\Users\keith\Standalone Programs\DB Viewer\SQLiteDatabaseBrowserPortable
04/26/2019 06:34 PM <SYMLINK> dbv.exe [SQLiteDatabaseBrowserPortable.exe]
09/26/2017 05:13 PM 176,944 SQLiteDatabaseBrowserPortable.exe
2 File(s) 176,944 bytes
0 Dir(s) 697,830,395,904 bytes free