【问题标题】:Execution context of a .lnk created on desktop在桌面上创建的 .lnk 的执行上下文
【发布时间】:2015-02-17 08:29:38
【问题描述】:

我有一个应用程序 A 在桌面上创建一个链接到另一个应用程序 B 的快捷方式。应用程序 B 在启动时必须检查是否需要更新某些文件并将其下载到 B 应用程序文件夹但如果我从快捷方式打开它在桌面上,应用程序 B 下载桌面上的所有更新文件。如果有办法告诉创建的链接不要更改执行上下文,我已经搜索了答案。

在桌面创建.lnk的代码如下:

Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); //Windows Script Host Shell Object
        dynamic shell = Activator.CreateInstance(t);
        try
        {
            var lnk = shell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)+"/"+string.Format("{0}.lnk", Name));
            try
            {
                lnk.TargetPath = Path;
                lnk.IconLocation = Path+", 0";
                lnk.Save();
            }
            finally
            {
                Marshal.FinalReleaseComObject(lnk);
            }
        }
        finally
        {
            Marshal.FinalReleaseComObject(shell);
        }

【问题讨论】:

    标签: c# execution desktop-shortcut


    【解决方案1】:

    链接不是问题。执行上下文始终是当前工作目录。

    在您的 B 程序中,您必须指定要写入的 B 文件夹。您可以使用以下方式获取当前应用程序路径:

    using System.Reflection;
    
    string path = Assembly.GetExecutingAssembly().Location;
    

    这是exe的路径。要获取目录,可以将其包装起来:

    using System.IO;
    
    string folder = Path.GetDirectoryName(path);
    

    【讨论】:

    • 谢谢!这工作正常。我试图更好地理解快捷行为,但我认为这是解决这个问题的更好方法。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多