2015-09-18 107 views
0

在unix/linux中,如果某個程序符號鏈接到另一個名稱並在該名稱下調用,則符號鏈接的名稱本身在ARGV [0]下可用。但是,在Windows中,如果我有快捷方式並通過快捷方式調用它,則ARGV [0]是原始程序名稱,而不是快捷方式名稱。在運行時獲取Windows程序快捷方式的名稱?

在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」調用的?

預先感謝您。

回答

2

有辦法調用編程方式使用CreateProcess和朋友的過程時這樣做,例如;用這些你可以確定整個命令行的樣子,甚至可以省略文件名,這樣argv[0]成爲第一個參數,通常是'argv[1]'。

如果可以用快捷方式完成同樣的操作,我不知道。你總是可以創建一個啓動器可執行文件和快捷方式。

至於實際發現它是否使用快捷方式運行而不觸及快捷方式本身,我非常懷疑這是可能的。 Explorer讀取快捷方式並調用指定的程序;沒有辦法讓你知道爲什麼瀏覽器啓動了你的應用程序。

+0

好的,非常感謝。 – HippoMan

相關問題