.NET 1.0に戻って、MS Windowsでショートカットのターゲットを返すメソッドを書きました。これはまだバグCOMを使わずにC#でプログラム的にWindowsファイルシステムのショートカットに従う方法はありますか?
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;
}
私を、私はよりエレガントなものでこれを置き換えるために探していますが、場合にのみました:それは、COMインターフェイスを介して強制的にWindowsスクリプトホストオブジェクトモデルと野獣に相互運用機能を使用してこれをしました交換は実際には少なくとも同様に機能します。私はまだショートカットのターゲットを見つけるネイティブのC#の方法を見つけることができません。そこには1つ、またはこれはまだこのタイプのことを行うための最善の方法ですか?
大きな質問です。 COM interopなしでこれを動作させる方法を考えなかった – Sung
残念なことに、これを達成するためにアンマネージコードでシェルを使用することは避けられませんでした。 – RobS