前幾天,做個小程序時遇到的問題,在百度上搜索了很久,沒有發現好的解決方案,在英文網站上立刻搜到辦法,看來還是國外的資源要全面一些,只是Google經常訪問不正常,沒辦法啊。
“C#如何獲取快捷方式指向的目標文件”,這個問題在百度上搜索的大多數結果是打開快捷方式文件,把快捷方式文件按字節讀入指數組中,然后自己編寫代碼逐字節讀出目標文件路徑,這種方法初學者就有點搞不清楚,特別是不了解捷方式文件組織方式的,用這個方法很費勁。
其實C#解決起來很簡單,原理就是利用IWshRuntimeLibrary中的IWshShortcut類,就可以獲取快捷方式指向的目標文件了。
以下是具體步驟:
一、在項目中添加“Windows Script Host Object Model”的引用
在項目上單擊右鍵,選擇“添加引用”,在“添加引用”對話框中選擇“COM”組件選項卡,然后單擊選擇“Windows Script Host Object Model”,最后確定。在項目中就會出現“IWshRuntimeLibrary”,下面就可以編寫代碼了。
二、代碼
用以下代碼可以實現了。
1、首先引用這些:
using System.IO; using IWshRuntimeLibrary;
2、編寫函數:
private string 獲取快捷方式文件指向的路徑(string 快捷方式文件的路徑) { //快捷方式文件的路徑 = @"d:\Test.lnk"; if (System.IO.File.Exists(快捷方式文件的路徑)) { WshShell shell = new WshShell(); IWshShortcut 當前快捷方式文件IWshShortcut類 = (IWshShortcut)shell.CreateShortcut(快捷方式文件的路徑); //快捷方式文件指向的路徑.Text = 當前快捷方式文件IWshShortcut類.TargetPath; //快捷方式文件指向的目標目錄.Text = 當前快捷方式文件IWshShortcut類.WorkingDirectory; return 當前快捷方式文件IWshShortcut類.TargetPath; } else { return ""; } }
我參考的英文原文鏈接:
http://forums.overclockers.co.uk/showthread.php?t=17966879