0

重複の可能性:
ディレクトリにアプリケーションのショートカットを作成する

.Net でショートカットを作成する方法を示す多くのコードが浮かんでいますが、それは 32 ビット アプリケーションとしてコンパイルされた場合にのみ機能します。64 ビット アプリケーションでは IWshRuntimeLibrary.WshShell を使用できません。

64ビットアプリケーションでショートカットを作成する方法を知っている人はいますか?

インストール中にそれを行う方法を探しているわけではないことに注意してください。これは、インストール後の目的です。

そして、SOに関するこの投稿(Windows 7ボックス(64ビット)でvb.netからショートカットを作成する)を認識していますが、それは質問に対する正しい答えではありません。質問は64ビットで、その人は32ビットの答えを出し、「32ビットをコンパイルするだけ」と言った。

4

2 に答える 2

4

ショートカットを作成するために特別なライブラリを使用する必要はありません。C# または VB.NET プログラムから直接 Shell32 オートメーション オブジェクトを使用できます。[プロジェクト] + [参照の追加]、[参照] タブで開始し、c:\windows\system32\shell32.dll を選択します。

次に、次のようなコードを記述して .lnk ファイルを作成します。

    // Creating a link named "test" on the desktop
    string lnkDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
    string lnkName = "test";

    // Create an empty .lnk file so we can create an object for it
    string lnkPath = System.IO.Path.Combine(lnkDir, lnkName) + ".lnk";
    System.IO.File.WriteAllBytes(lnkPath, new byte[] { });

    // Initialize a ShellLinkObject for that .lnk file
    Shell32.Shell shl = new Shell32.ShellClass();
    Shell32.Folder dir = shl.NameSpace(lnkDir);
    Shell32.FolderItem itm = dir.Items().Item(lnkName + ".lnk");
    Shell32.ShellLinkObject lnk = (Shell32.ShellLinkObject)itm.GetLink;

    // We'll just dummy a link to notepad
    lnk.Path = Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\notepad.exe";
    lnk.Description = "Anything goes here";
    lnk.Arguments = @"c:\sample.txt";
    lnk.WorkingDirectory = @"c:\";

    // And dummy an icon (it will the one used by cmd.exe)
    lnk.SetIconLocation(Environment.GetFolderPath(Environment.SpecialFolder.System) + "cmd.exe", 1);

    // Done, save it
    lnk.Save(lnkPath);
于 2012-10-27T20:04:38.380 に答える
0

ショートカットを作成するには、WScript ではなく COM を使用することをお勧めします。
このチュートリアルを見てみましょう:ショートカットの作成と変更 ショートカットを操作できる .NET クラス
が見つかります。ShellLink

于 2012-10-27T19:54:34.847 に答える