プログラムのショートカットはエクスプローラでファイルを選択して右クリックしてコンテキストメニューから簡単にショートカットファイルが作成できますが、エクスプローラをユーザーに開放したくない(できない)ときに、ショートカットファイルを作らなければならない場面があります。
そこで、プログラム中でショートカットを作成しようと思います。
いざ、検索して機能を調査しているとかなりヒットするのですが、なぜかコードにエラーが出ます。
そのエラーの原因も含めて解決した手順について載せておきます。
あまり、出番のないコードだとは思いますが、なにかと便利なのでコードだけアップしておこうと思います。
ライブラリの追加
ショートカットファイルを作成するためのIWsShellクラスを使います。
IWsShellはIWshRuntimeLibraryが必要なので参照設定をします。
ソリューションエクスプローラでプロジェクトの参照を右クリックします。
「参照の追加」をクリックし、「参照マネージャ」で「COM」を選択します。
一覧から”Windows Script Host Object Model”にチェックを入れ、[OK]をクリックします。
ソリューションエクスプローラのプロジェクトの参照に、IWshRutimeLibraryが追加されます。
サンプルコード
検索して見つかるほとんどのコードは「WshShellClass」を使っていました。どうも.NET Framework 4以降は「WshSell」で使えるようです。
using IWshRuntimeLibrary;
private void CreateShurtcutFile(string shortcutFilePath, String linkPath)
{
IWshShell shell = null; // シェルオブジェクト
IWshShortcut sc = null; // ショートカットオブジェクト
try
{
shell = new WshShell();
sc = (IWshShortcut)shell.CreateShortcut(shortcutFilePath);
sc.TargetPath = linkPath;
sc.Save();
}
finally
{
if(sc != null)
{
Marshal.ReleaseComObject(sc);
}
if (shell != null)
{
Marshal.ReleaseComObject(shell);
}
}
}