如何通过代码在Windows 10中添加快捷方式link in "Quick Access"?

How to add shortcut link in "Quick Access" in Windows 10 through code?

我想将文件夹位置之一的快捷方式 link 添加到 windows 中的 "Quick Access" 10.

在 Windows 7 和 Windows 8 的情况下,我曾经将我的快捷方式 link 放在文件夹 "C:\Users\user_name\Links" 中,它显示我的收藏夹中的快捷方式位于左边。所以我想为 Windows 10.

做同样的事情

我直接复制快捷方式粘贴到快速访问的位置。但它仍然没有显示在快速访问的左侧面板中。 据我所知,快速访问中有两个选项:1. 常用文件夹和 2. 常用文件。

那么我需要将该快捷方式放在什么位置 link 以便它显示在左侧面板的“快速访问”部分中?

我还想问一下,"OneDrive" link 他们是如何在 Windows 10 的左侧面板中添加的?那么是否有任何注册表项或任何特定位置?

我没有找到合适的解决方案。 但是我为我的问题应用了解决方法。 我在快速访问位置 (\Links) 创建了文件夹。并使用 mkilink cmd 我将它的符号 link 更改为目标文件夹。我使用 mklink 在 C# 代码中使用 cmd 提示使用 Process.

我正在使用以下代码在 c:\users\user_name\links 创建文件夹快捷方式,它在 windows 7 和 8 中工作正常,但在 windows 10 quick 下看不到它在 windows 资源管理器中访问 link。

string sLinkFileName = "c:\users\user_name\links\" + DefineString.AppName + ".lnk";
            FileInfo objfiLinkFile = new FileInfo(sLinkFileName);
            if (objfiLinkFile.Exists)
            {
                try
                {
                    objfiLinkFile.Delete();
                }
                catch (Exception ex)
                {
                    Logger.Log(LoggingLevel.Info, MethodBase.GetCurrentMethod().Name, string.Empty, ex);
                }
            }

            //Place a shortcut to the file in the special folder 
            objfiLinkFile.Refresh();
            if (objfiLinkFile.Exists)
            {
                Logger.Log(LoggingLevel.Info, MethodBase.GetCurrentMethod().Name, "Old link file still exists.");
            }
            // Create a shortcut in the special folder for the file
            // Making use of the Windows Scripting Host
            IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
            IWshRuntimeLibrary.IWshShortcut link = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(objfiLinkFile.FullName);
            link.TargetPath = Utils.msApplicationRootPath;
            link.WindowStyle = 1;
            link.Description = string.Format(DefineString.m00025, DefineString.AppName);
            link.IconLocation = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\RootFolder.ico";
            link.Save();

我也试过像你提到的那样调用 mklink;但它没有用。不幸的是,我们无法直接控制用户桌面。 mklink 命令需要管理员权限?您使用哪个 mklink 命令来解决问题。非常感谢您的帮助。

Process process = new Process();
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.FileName = "cmd.exe";
            startInfo.Arguments = string.Format(@"/C mklink {0} {1}", sLinkFileName, Utils.msApplicationRootPath);
            process.StartInfo = startInfo;
            process.Start();

您可以通过这个 powershell 脚本来完成:

$o = new-object -com shell.application
$o.Namespace('c:\Folder').Self.InvokeVerb("pintohome")