0

可能重复:
在目录中创建应用程序快捷方式

有很多代码显示如何在 .Net 中创建快捷方式,但它仅在编译为 32 位应用程序时才有效。您不能在 64 位应用程序中使用 IWshRuntimeLibrary.WshShell。

有谁知道如何在 64 位应用程序中创建快捷方式?

请注意,我也不是在寻找安装时的方法。这是为了安装后的目的。

而且我知道关于 SO 的这篇文章(在 Windows 7 框(64 位)上从 vb.net 创建快捷方式),但这不是问题的正确答案。这个问题是 64 位的,这个人给出了 32 位的答案并说“只编译 32 位”。

4

2 回答 2

4

您不需要使用特殊的库来创建快捷方式,您可以直接从 C# 或 VB.NET 程序中使用 Shell32 自动化对象。开始使用 Project + Add Reference,Browse 选项卡,选择 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

我建议您使用 COM 而不是 WScript 来创建快捷方式。
看看这个教程:创建和修改快捷方式
您会发现ShellLink.NET 类可以让您操作快捷方式。

于 2012-10-27T19:54:34.847 回答