在运行时获取Windows程序的快捷方式名称?

时间:2015-09-18 13:10:49

标签: windows executable shortcut

在unix / linux中,如果程序符号链接到另一个名称并在该另一个名称下调用,则符号链接本身的名称在ARGV [0]下可用。但是,在Windows中,如果我有可执行文件的快捷方式并通过快捷方式调用它,则ARGV [0]是原始程序名称,而不是快捷方式名称。

在Windows下有什么方法可以在运行时获取程序的快捷方式名称吗?

例如,假设在linux中我有一个名为“origprog”的可执行文件,我会执行以下操作:

ln -s origprog newprog

如果我运行“./origprog”,ARGV [0]为“./origprog”,如果我运行“./newprog”,则ARGV [0]为“./newprog”。

但是,在Windows下,假设我有一个名为“origprog.exe”的程序,我为它创建了一个名为“newprog.exe.lnk”的快捷方式。

如果我调用“c:\ path \ to \ origprog.exe”,ARGV [0]为“c:\ path \ to \ origprog.exe”,如果我调用“c:\ path \ to \ newprog” .exe.lnk“,ARGV [0]也是”c:\ path \ to \ origprog.exe“。在运行时Windows中是否有任何方法可以通过“c:\ path \ to \ newprog.exe.lnk”实际调用该程序?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,例如在使用CreateProcess和朋友以编程方式调用流程时;通过这些,您可以确定整个命令行的样子,甚至可以省略文件名,这样argv[0]成为第一个通常'是argv[1]

如果使用快捷方式可以做同样的事情,我不知道。您始终可以创建一个启动程序可执行文件和快捷方式。

至于实际发现它是否使用快捷方式而不触及快捷方式本身,我非常怀疑这是可能的。资源管理器读取快捷方式并调用指定的程序;您无法知道为什么资源管理器启动了您的应用程序。