为了账号安全,请及时绑定邮箱和手机立即绑定

在目录中创建应用程序快捷方式

/ 猿问

在目录中创建应用程序快捷方式

C#
呼唤远方 2019-10-12 19:07:16

在目录中创建应用程序快捷方式

如何在C#或使用.NET框架中创建应用程序快捷方式(.ink文件)?

结果将是指向指定应用程序或URL的.ink文件。



查看完整描述

3 回答

?
www说

这并不像我想的那么简单,但是有一个很棒的课堂电话ShellLink.cs在…vb加速器

此代码使用互操作,但不依赖于WSH。

使用该类,创建快捷方式的代码如下:

private static void configStep_addShortcutToStartupGroup(){
    using (ShellLink shortcut = new ShellLink())
    {
        shortcut.Target = Application.ExecutablePath;
        shortcut.WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath);
        shortcut.Description = "My Shorcut Name Here";
        shortcut.DisplayMode = ShellLink.LinkDisplayMode.edmNormal;
        shortcut.Save(STARTUP_SHORTCUT_FILEPATH);
    }}



查看完整回答
反对 回复 2019-10-13
?
撒科打诨

干净。(.net 4.0)

Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); //Windows Script Host Shell Objectdynamic shell = Activator.CreateInstance(t);try{
    var lnk = shell.CreateShortcut("sc.lnk");
    try{
        lnk.TargetPath = @"C:\something";
        lnk.IconLocation = "shell32.dll, 1";
        lnk.Save();
    }finally{
        Marshal.FinalReleaseComObject(lnk);
    }}finally{
    Marshal.FinalReleaseComObject(shell);}

就是这样,不需要额外的代码。Create捷径甚至可以从文件中加载快捷方式,因此属性如下TargetPath返回现有信息。快捷对象属性.

对于.NET不支持动态类型的版本,也可能采用这种方式。(.净3.5)

Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); //Windows Script Host Shell Objectobject shell = Activator.CreateInstance(t);try{
    object lnk = t.InvokeMember("CreateShortcut", BindingFlags.InvokeMethod, null, shell, new object[]{"sc.lnk"});
    try{
        t.InvokeMember("TargetPath", BindingFlags.SetProperty, null, lnk, new object[]{@"C:\whatever"});
        t.InvokeMember("IconLocation", BindingFlags.SetProperty, null, lnk, new object[]{"shell32.dll, 5"});
        t.InvokeMember("Save", BindingFlags.InvokeMethod, null, lnk, null);
    }finally{
        Marshal.FinalReleaseComObject(lnk);
    }}finally{
    Marshal.FinalReleaseComObject(shell);}



查看完整回答
反对 回复 2019-10-13
?
元芳怎么了

我发现了这样的东西:

private void appShortcutToDesktop(string linkName){
    string deskDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

    using (StreamWriter writer = new StreamWriter(deskDir + "\\" + linkName + ".url"))
    {
        string app = System.Reflection.Assembly.GetExecutingAssembly().Location;
        writer.WriteLine("[InternetShortcut]");
        writer.WriteLine("URL=file:///" + app);
        writer.WriteLine("IconIndex=0");
        string icon = app.Replace('\\', '/');
        writer.WriteLine("IconFile=" + icon);
        writer.Flush();
    }}

原始代码伤感者的文章“链接到桌面”



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信