0

別のアプリケーションのショートカットを特定のフォルダにコピーできるウィンドウのフォーム アプリケーションを c# で作成しようとしています。このコードを使用してファイルをコピーしますが、ショートカットを作成できません...

system.io.file.copy("what","where");

私はこれを使用していますが、うまくいきません

        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(".\\calc.exe");
        string destination = @"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\Startup";
        System.IO.FileInfo[] files = dir.GetFiles("*.exe");

        foreach (var shorcut in files)
        {
            System.IO.File.Move(shorcut.FullName, destination);
        }

最も簡単な方法は何ですか?

4

1 に答える 1

0

次のコードにより、lnk ファイルを読み取ることができます。

あまり意味がありません。簡単に確認する方法がありません。最善の方法は、.lnk ファイルを本来の方法で読み取ることだと思います。これには COM を使用できます。ShellLinkObject クラスは IShellLink インターフェイスを実装します。[プロジェクト] + [参照の追加] の [参照] タブで開始し、c:\windows\system32\shell32.dll に移動します。これにより、相互運用ライブラリが生成されます。次のようなコードを記述します。

public static string GetLnkTarget(string lnkPath) {
    var shl = new Shell32.Shell();         // Move this to class scope
    lnkPath = System.IO.Path.GetFullPath(lnkPath);
    var dir = shl.NameSpace(System.IO.Path.GetDirectoryName(lnkPath));
    var itm = dir.Items().Item(System.IO.Path.GetFileName(lnkPath));
    var lnk = (Shell32.ShellLinkObject)itm.GetLink;
    return lnk.Target.Path;
}

次に、次のコードを使用して独自のフォルダーに保存するだけです

First include a reference to C:\Windows\System32\wshom.ocx

Second, include the following using statement :-

using IWshRuntimeLibrary;

Third, Here is the code :-

// This creates a Folder Shortcut
IWshShell wsh = new WshShellClass();
IWshShortcut shortcut = (IWshShortcut) wsh.CreateShortcut (shortcutpathfilename);
shortcut.TargetPath = targetdir;
shortcut.Save();
shortcutpathfilename is a path & filename of the .lnk file.
targetdir is the directory the link points to.
于 2012-10-05T07:43:33.440 に答える