にするには?私はどこでも検索して、ショートカットファイルのターゲットしか見つけません。ショートカットフォルダのディレクトリターゲットを取得するにはどうすればよいのショートカットフォルダのターゲット
答えて
私はあなたがCOMを使用してthis blog postで説明したように、「マイクロソフトシェル制御およびオートメーション」への参照を追加する必要がありますと思う:
ここであったコードを使用した例です:
namespace Shortcut
{
using System;
using System.Diagnostics;
using System.IO;
using Shell32;
class Program
{
public static string GetShortcutTargetFile(string shortcutFilename)
{
string pathOnly = System.IO.Path.GetDirectoryName(shortcutFilename);
string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);
Shell shell = new Shell();
Folder folder = shell.NameSpace(pathOnly);
FolderItem folderItem = folder.ParseName(filenameOnly);
if (folderItem != null)
{
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
return link.Path;
}
return string.Empty;
}
static void Main(string[] args)
{
const string path = @"C:\link to foobar.lnk";
Console.WriteLine(GetShortcutTargetFile(path));
}
}
}
ありがとう!今、私はちょうどprogrammaticaly shortcufフォルダを探すために方法を見つける必要がある:) –
私はWindows 7の64ビットで動作し、それは 'CにインストールされたVirtualBoxへのショートカット見つけることに失敗した:\プログラムファイル\オラクル\ VirtualBoxOSX'を。ターゲットは 'C:¥Program Files(x86)¥Oracle¥VirtualBoxOSX¥VirtualBox.exe'に戻りました。この動作に関する説明はありますか? – swdev
この方法でShell32を使用すると、単一スレッドアプリケーションでのみ使用できます。メインエントリポイントに[STAThread]を含める必要があります。ユニットテストではSTAThreadが許可されていないため、このコードでユニットテストで例外が発生します。 [解答](http://stackoverflow.com/questions/14543340/calling-shell32-dll-from-net-windows-service)を参照してください。解決策は、ユニットテストでこのコードを実行することもありますhttp://haacked.com/archive/2014/11/20/xunit-and-sta/ – yancyn
すべてのファイルショートカットには、.lnkファイル拡張子があります。たとえば、文字列を使用すると、string.EndsWith( ".lnk")をフィルタとして使用できます。あなたが必要な場合にも、それらを考慮する必要がありますので、
すべてのURLのショートカットは、た.urlファイル拡張子を持っています。
OPはありませんどのように、ショートカットのターゲットディレクトリを取得する方法を尋ね参照してくださいショートカットかどうか確認してください。 –
依存関係を使用しない場合は、https://blez.wordpress.com/2013/02/18/get-file-shortcuts-target-with-c/ を使用できますが、lnk形式は文書化されていません。リスクを理解している場合にのみ記述してください。
あなたがデスクトップ上にショートカットしているアプリケーションのパス、私が使用して簡単な方法を見つけたい場合は、以下の通りです:
Process.GetCurrentProcess().MainModule.FileName.Substring(0, Process.GetCurrentProcess().MainModule.FileName.LastIndexOf("\\")
このコードの復帰誰がファイルを要求していることに関係なく、実行されている任意のexeファイルのパス
さらに簡単な方法は、私が使用してリンクのパスを取得します
private static string LnkToFile(string fileLink)
{
string link = File.ReadAllText(fileLink);
int i1 = link.IndexOf("DATA\0");
if (i1 < 0)
return null;
i1 += 5;
int i2 = link.IndexOf("\0", i1);
if (i2 < 0)
return link.Substring(i1);
else
return link.Substring(i1, i2 - i1);
}
をしかし、それは当然の休憩の意志LNKファイル形式が変更された場合。窓10で
それは、これがすべてでWPFに関するしません。このように行われる必要があり、最初の「Microsoftシェルの制御およびオートメーション」にCOM参照を追加
// new way for windows 10
string targetname;
string pathOnly = System.IO.Path.GetDirectoryName(LnkFileName);
string filenameOnly = System.IO.Path.GetFileName(LnkFileName);
Shell shell = new Shell();
Shell32.Folder folder = shell.NameSpace(pathOnly);
FolderItem folderItem = folder.ParseName(filenameOnly);
if (folderItem != null) {
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
targetname = link.Target.Path; // <-- main difference
if (targetname.StartsWith("{")) { // it is prefixed with {54A35DE2-guid-for-program-files-x86-QZ32BP4}
int endguid = targetname.IndexOf("}");
if (endguid > 0) {
targetname = "C:\\program files (x86)" + targetname.Substring(endguid + 1);
}
}
- 1. ショートカットフォルダのcodeigniterにファイルをアップロード
- 2. linux Webサーバーにショートカットフォルダを作成するにはどうすればよいですか?
- 3. どのようにどのように私はC#を使用して、Windowsのスタートメニューからショートカットフォルダを削除することができますC#
- 4. AttachedPropertyをマルチバインディングのターゲットにするにはどうすればよいですか?
- 5. どのようにondropイベントのターゲットIDを取得するには?
- 6. 1つのターゲットが別のターゲットのターゲットに依存するように、Makefileを構造化するにはどうすればよいですか?
- 7. ウェブサイトのアイコンを取得するにはどうすればよいですか?
- 8. オーバーレイオブジェクトのイベントハンドラを取得するにはどうすればよいですか?
- 9. s3のレイテンシービューを取得するにはどうすればよいですか?
- 10. リダイレクトページのページコンテンツを取得するにはどうすればよいですか?
- 11. チェックインコードのみを取得するにはどうすればよいですか?
- 12. VS.Phpのカラーオプションを取得するにはどうすればよいですか?
- 13. webpackのライブリロードを取得するにはどうすればよいですか?
- 14. modelmetadataのモデルを取得するにはどうすればよいですか?
- 15. リストのアドレスを取得するにはどうすればよいですか?
- 16. デスクトップウィンドウのハンドルを取得するにはどうすればよいですか?
- 17. LinkedHashMapのkeyIteratorを取得するにはどうすればよいですか?
- 18. ツイートのURLを取得するにはどうすればよいですか?
- 19. ユーザーグループのスピーカーを取得するにはどうすればよいですか?
- 20. このボタンレイアウトを取得するにはどうすればよいですか?
- 21. nightwatchjsのスクリーンショットを取得するにはどうすればよいですか?
- 22. StackExchange.Redisのキーカウントを取得するにはどうすればよいですか?
- 23. モバイルネットワークのステータスを取得するにはどうすればよいですか?
- 24. カスタムオープングラフオブジェクトのカスタムプロパティを取得するにはどうすればよいですか?
- 25. iframeのソースを取得するにはどうすればよいですか?
- 26. DynamicControlの値を取得するにはどうすればよいですか?
- 27. コンパニオンオブジェクトのScalaSigを取得するにはどうすればよいですか?
- 28. Java:org.w3c.dom.Nodeのxpathを取得するにはどうすればよいですか?
- 29. モデルフォームボタンのクリックイベントを取得するにはどうすればよいですか?
- 30. テンプレートテンプレートパラメータのテンプレートパラメータを取得するにはどうすればよいですか?
、私はこれはタグ –
を削除ソリューション私が好む:[私は、ファイルのショートカットからパス名を取得する方法は?](http://stackoverflow.com/a/13079688/3757210) – ilcorvo