ショートカットファイルを実行したい
windows11でクイックランチが使えなくなったのでクイックランチもどきを作ろうかとショートカットを実行するアプリを作る事にしました。
ショートカットファイルからアプリを実行する
ちょっと雑なコードですが、ざっくり解説します。
UseShellExecuteをtrueに設定することにより、オペレーティングシステムのシェルにより、指定されたリンクが適切なアプリケーションで開かれることになります(たとえば、URLであれば、既定のウェブブラウザで開かれます)
通常であれば、ExecuteLink(@"X:\path\to\shortcut.lnk")でリンクを開けます。
void ExecuteLink(string Link) {
var P = new Process();
P.StartInfo.FileName = Link;
P.StartInfo.UseShellExecute = true;
P.Start();
}
何故かファイルが見つからない
上記コードを実行しても、「ファイルが見つからない」というエラーに場合がある。
ショートカットファイルのパスが誤っているわけでも、ショートカット先のアプリが削除されているわけでもない。
その場合に試して欲しいのは、コンパイルオプションです。
私もこんな罠があると思ってなかったです。
結論
32ビットを選ぶ(VisualStudio 2019の場合)のチェックを外す
※新しい(?)バージョンの場合は、「32ビットを優先」の場合があるかもです。
フォールバック的な動作を期待していましたがどうやらそういう訳ではないのでしょう。
32ビットに拘っているわけではないプロジェクトなので、一旦チェックを外してするめる事にしました。