在.Net中为64位计算机创建快捷方式 - 仅编译为64位应用程序

时间:2012-10-27 19:28:59

标签: .net visual-studio 64-bit desktop-shortcut

  

可能重复:
  Creating application shortcut in a directory

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

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

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

我知道SO上的这篇文章(Create shortcut from vb.net on Windows 7 box (64 bit)),但这不是问题的正确答案。问题是64位,该人给出了32位的答案并说“只需编译32位”。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我建议您使用COM而不是WScript来创建快捷方式 看一下本教程:Creating and Modifying Shortcuts
您将找到允许您操作快捷方式的ShellLink .NET类。