Windowsショートカットは、リンクをクリックしたときに移動または名前が変更されたショートカットターゲットの現在の場所を取得するために、分散リンク追跡サービスを使用します。この場所をプログラムで取得する方法はありますか(C#)?C#でショートカットターゲットの現在の場所をプログラムで見つける方法はありますか?
答えて
はい。あなたはthis blog article by Jani Järvinenからコードを使用することができます。
class Program
{
[STAThread]
static void Main(string[] args)
{
const string shortcut = @"C:\test.lnk"; // Shortcut file name here
string pathOnly = System.IO.Path.GetDirectoryName(shortcut);
string filenameOnly = System.IO.Path.GetFileName(shortcut);
Shell32.Shell shell = new Shell32.Shell();
Folder folder = shell.NameSpace(pathOnly);
FolderItem folderItem = folder.ParseName(filenameOnly);
if (folderItem != null)
{
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
Console.WriteLine(link.Path);
}
Console.ReadKey();
}
}
残念ながら、この非常にエレガントなコードは、残念ながら.lnkファイル内の現在のストアドリンクのターゲットを取得します。ターゲットを移動または名前を変更した場合、返されるパスは変更されません。 – SimonKravis
Devil_coder /コーディーグレーで我慢したコードに小さなほかは何が必要ありません。 link.Resolveを次のように追加します。https://msdn.microsoft.com/en-us/library/windows/desktop/bb773996(v=vs.85).aspxに定義されたフラグ は現在のリンク先を返します。
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink; link.Resolve(5); Console.WriteLine(link.Path);
フラグ値(5 = 4(更新パス)+ 1(ダイアログを表示しない))を使用すると、存在しないターゲットへのパスを削除しないオプションが使用されます。ショートカットターゲットが移動または削除されたかどうかが表示され、ショートカットを削除するかどうかを尋ねられます。移動したターゲットが処理されるため、このダイアログは正しくありません。 – SimonKravis
- 1. ユーザーの現在の場所(mozillaとchrome以外のブラウザ)を見つける方法はありますか?
- 2. GPRSなしで現在地の場所を見つける方法は?
- 3. webViewで現在の場所を許可する方法はありますか?
- 4. 現在の場所を見つけて、その場所でマーカーを作成する方法。
- 5. Perlで正規表現の_all_の場所を見つける方法はありますか?
- 6. 現在の住所を見つける方法は?
- 7. 現在の場所のマーカーを見つける
- 8. 場所IDのリストの現在の場所から近くにあるものを見つける
- 9. Android:デバイスの現在の場所を見つける最も速い方法は何ですか
- 10. プログラムの場所を見つける方法
- 11. 現在の場所を見つけるAndroid 6.0
- 12. Matlabマトリックスでいくつかの数字の場所を見つける方法はありますか?
- 13. 場所にあるものを見つける方法は?
- 14. WindowsServiceからC#の現在ログインしているユーザーを見つける方法はありますか?
- 15. C/C++でデバイスのマウントポイントを見つける方法はありますか?
- 16. 現在の場所をプログラムで取得/設定する方法は?
- 17. iphoneでhtmlを使用して現在の場所を見つける
- 18. InstallShieldのVBScriptカスタムアクションでセットアップ場所を見つける方法は?
- 19. スタートアップフォルダの場所をJavaで見つける方法は?
- 20. Laravel 5.2で画像の場所を見つける方法は?
- 21. C#:現在のプロセスを見つける
- 22. アドレスのある場所を見つける方法?
- 23. Cでタップアダプタのブリッジデバイス名を見つける方法はありますか?
- 24. CプログラムでsetuidのユーザーのUIDを見つける方法は?
- 25. 私のPCのエンディアンをC言語を使用してプログラムで見つける方法はありますか?
- 26. コンパイラプラグインからScalaプログラムのステートメントを見つける方法はありますか?
- 27. プログラムによってphp.iniファイルの場所を見つける方法は?
- 28. 'disass <something>'のエイリアスを現在の場所で逆アセンブルする方法はありますか?
- 29. 現在の場所からオートコンプリートの結果が得られた場所の距離を見つけるIOS
- 30. appiumでモバイルテストの現在のURLを見つける方法
EXEが起動された場所を教えてください。 –
「C#で」と言うと、P/Invokeが受け入れられないという意味ですか? – Anders
場所はショートカットターゲットの場所です - 関連する.exeはありません。 .lnkファイルには一意のファイル識別子が格納されていて、Link Tracking Serviceの引数として使用されています。変更されていればターゲット位置を更新します。これは.lnkファイルにも格納されていると思います。これが必要な場合は、P/Invokeなどの場所を取得するためのメソッドを使用して喜んで – SimonKravis