如何在 C# 中创建没有管理员权限的快捷方式?

How to create a shortcut without admin privileges in C#?

我想在桌面上创建一个 .exe 文件的 .lnk 快捷方式,但我不能 运行 我的程序作为管理员。

使用 Windows Script Host Object 对我不起作用,因为我收到 Task could not find “AxImp.exe” 错误。这个问题可以通过安装 Windows SDK 来解决,但是这也需要安装管理员权限。

在 C# 中有没有办法创建没有管理员权限的 .lnk 快捷方式(第三方或内置无关紧要)?

您只能在桌面上为自己创建快捷方式(即程序在您的帐户下 运行,它正在尝试访问您的桌面)。如果您想访问其他任何人的桌面,则需要管理员权限。这就是 Windows 的工作方式,无论您使用 C# 还是任何其他语言。

如果您想在当前用户的桌面上创建快捷方式并且有 UAC 问题并且不能运行作为管理员 ,您可以在项目中创建一个 script.vbs 并将其设置为在输出目录中复制,然后在需要时 运行 vbs。

script.vbs的内容:

Dim WshShell
Set WshShell = CreateObject("Wscript.shell")
Dim strDesktop 
strDesktop= WshShell.SpecialFolders("Desktop")
Dim oMyShortcut
Set oMyShortcut = WshShell.CreateShortcut(strDesktop + "\Shortcut to Notepad.lnk")
OMyShortcut.TargetPath = "notepad.exe"
oMyShortCut.Save
Set WshShell= Nothing
Set oMyShortcut= Nothing

运行 script.vbs:

private void button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(System.IO.Path.Combine(Application.StartupPath, "script.vbs"));
}