5

.NET 1.0 の頃、MS Windows でショートカットのターゲットを返すメソッドを書きました。これは、Windows スクリプト ホスティング オブジェクト モデルへの相互運用機能と、COM インターフェイスを介したブルート フォースを使用して行われました。

private FileInfo GetFileFromShortcut(FileInfo shortcut)
{
    FileInfo targetFile = null;

    try
    {
        IWshRuntimeLibrary.WshShell wShell = new IWshRuntimeLibrary.WshShellClass();
        IWshRuntimeLibrary.WshShortcut wShortcut = (IWshRuntimeLibrary.WshShortcut)wShell.CreateShortcut(shortcut.FullName);

        // if the file wasn't a shortcut then the TargetPath comes back empty
        string targetName = wShortcut.TargetPath;
        if (targetName.Length > 0)
        {
            targetFile = new FileInfo(targetName);
        }
    }
    catch (Exception)
    { // will return a null targetFile if anything goes wrong
    }

    return targetFile;
}

これはまだ私を悩ませており、これをよりエレガントなものに置き換えることを検討していましたが、置き換えが実際に少なくとも同様に機能する場合に限ります. ショートカットのターゲットを見つけるネイティブな C# の方法がまだ見つかりません。それとも、これがこの種のことを行うための最良の方法ですか?

4

3 に答える 3

1

誰かがShellLinkという C# でショートカット ファイルを操作するクラスを作成したようですが、これも COM を使用しています。

于 2009-03-11T21:16:07.897 に答える
1

.lnk または .url ファイルを開いて解析することはできませんか?

これは同じことについて話し、ファイルがどのように見えるかを示しています: http://www.programmingtalk.com/showthread.php?t=7335

于 2009-03-23T00:39:20.687 に答える
0

これも少し前から興味がありました。

これは、LNK ファイルの形式の (非公式な) 説明へのリンクを含む、受け入れられた応答です。どうやら、利用可能なすべてのメソッドはまだいくつかの API を通過しています。

于 2010-11-22T05:31:13.467 に答える