【C#】WSHを使ってショートカットを作成する
おはようございます。
少し久しぶりにC#の投稿です。
今回はC#プログラムからWSHを利用して
デスクトップにショートカットファイルを作成してみました。
プログラムは、新規作成となります。
スポンサーリンク
新規プロジェクトの作成
VisualStudio2017 で、新規コンソールプロジェクトを作成します。
VisualStudio2017のインストールやプロジェクトの作成方法は次の記事を参考にしていただければ。
プログラム
program.cs
using System; using System.IO; using System.Reflection; namespace ConsoleApp1 { /// <summary> /// コンソールプログラム. /// </summary> class Program { /// <summary> /// メイン処理 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine("ショートカット作成 開始"); // 引数にパスが設定されていたらそれを使う string target = ""; foreach (string s in args) { FileInfo fi = new FileInfo(s); if (fi.Exists) { target = fi.FullName; // ショートカット作成 CreateShrotcutFile(target); } } // 引数が無ければ、とりあえず自身のショートカットでも作ってみる if (string.IsNullOrEmpty(target)) { target = Assembly.GetExecutingAssembly().Location; // ショートカット作成 CreateShrotcutFile(target); } Console.WriteLine("ショートカット作成 終了"); Console.ReadKey(); } /// <summary> /// ショートカットファイルを作成します. /// </summary> /// <param name="filePath"></param> public static void CreateShrotcutFile(string filePath) { Console.WriteLine(new FileInfo(filePath).Name + " のショートカットを作成します。"); // 出力先(デスクトップ) string destDir = Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory); // ショートカットファイル名 string shortcutFile = Path.GetFileNameWithoutExtension(filePath) + @".lnk"; // 作成するショートカットのパス string shortcutPath = destDir + @"\" + shortcutFile; // リフレクションでWSHオブジェクトを作成 // GUIDは WSH のCLSID dynamic shell = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8"))); // WSHでショートカットを作成 var shortcut = shell.CreateShortcut(shortcutPath); // ショートカットのリンク先設定 shortcut.TargetPath = filePath; // アイコンのパスを設定 // ショートカットの元となるファイルから 0番目 のアイコンを指定 shortcut.IconLocation = filePath + ",0"; // ショートカットを保存 shortcut.Save(); // Shell、COMオブジェクトの解放 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(shortcut); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(shell); } } }
CLSIDについて
WSHのCLSIDなんかは、レジストリの
「コンピュータ\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\」
を参照してください。
起動してみる
とりあえず、デバッグ引数に、「notepad.exe」、「explore.exe」のパスを渡して実行。
コンソールに結果が出力され、デスクトップにショートカットが作成されればOKですね。
まとめ
まあ、ちょっと使い道についてはなんとも言えませんが
こういった方法があるんだということで、勉強になりました。
C#については次回は未定です。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません