尝试在控制台应用程序中使用 JclShell 创建 ShellLink 快捷方式失败

Trying to create a ShellLink Shortcut with JclShell in a console app fails

我尝试在 Delphi Rio 10.3.3 的简单控制台应用程序中使用 JclShell 创建 ShellLink 快捷方式:

program ShellLinkShortcutHashTest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  JclShell,
  System.SysUtils;

const
  ShortcutFile = 'R:\myshortcut.lnk';
  ShortcutTarget = 'C:\Windows\System32\notepad.exe';

function SaveShortcutShellLink(const AFile: string): string;
var
  SL: JclShell.TShellLink;
  HR: Integer;
begin
  Result := 'error';

  SL.Target := ShortcutTarget;
  SL.Description := 'My description';
  HR := JclShell.ShellLinkCreate(SL, AFile);

  Result := IntToStr(HR);
end;

begin
  try
    Writeln(SaveShortcutShellLink(ShortcutFile));
    Readln;
  except
    on E: Exception do
    begin
      Writeln(E.ClassName, ': ', E.Message);
      Readln;
    end;
  end;
end.

但是,没有创建 ShellLink 快捷方式,结果如下:

-2147221008

我试过不同的路径常量(没有写保护),但总是失败。

我的 OS: Windows 7 x64 SP1

在上述目录的 Windows 文件资源管理器中手动创建 ShellLink 快捷方式没有问题。

JclShell有什么问题吗?

Winapi.ActiveX.OleInitialize(nil);
try
  Writeln(SaveShortcutShellLink(ShortcutFile));
finally
  Winapi.ActiveX.OleUninitialize;
end;
Readln;