uses ... ComObj, ShlObj,registry;
procedure MakeLink(proName,lnkName,Description : String);
var
  WorkDir, DestName: String;
  aReg   : TRegistry;
  aObj   : IUnknown;
  MyLink : IShellLink;
  MyPFile: IPersistFile;
  WFileName: WideString;
begin
  aReg := TRegistry.create;
  aReg.RootKey:=HKey_Current_User;
  aReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
//  DestName := aReg.ReadString('Programs') + '\'+lnkName;
  DestName := 'C:\WINDOWS\Start Menu\Programs\启动\'+ lnkName;
  aReg.Closekey;  aObj := CreateComObject(CLSID_ShellLink);
  MyLink := aObj as IShellLink;
  MyPFile := aObj as IPersistFile;  WorkDir:= ExtractFilePath(proName);
  with MyLink do //操作IShellLink类
    begin
        //设置显示窗口的类型
      SetShowCmd(SW_NORMAL);
        { 对DOS程序,一般建议使用SetShowCmd(SW_SHOWMAXIMIZED); }
        // 设置命令行参数
      SetArguments('');
        // 设置描述
      SetDescription(pChar(Description));
        // 设置程序名称[全路径,如果在系统Path中,可直接为程文件名]
      SetPath(pChar(proName));
        // 设置工作目录
      SetWorkingDirectory(pChar(WorkDir));
    end;    //取.LNK文件的位置
  CreateDir(ExtractFilePath(DestName));
    //建立快捷方式: .LNK文件
  WFileName := DestName;  //将一个String赋给WideString,转换过程由Delphi自动完成
  MyPFile.Save(PWChar(WFileName), False);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   MakeLink('c:\windows\notepad.exe','相关测试.lnk','c:\windows\notepad.exe');
//变成你的执行程序路径
end;