1

次のコードを使用して、Delphiでショートカットを作成しています。ショートカットの[特権レベル]プロパティで[このプログラムを管理者として実行する]チェックボックスをオンにしてショートカットを作成したい。これを行う方法はありますか?

function MakeShortcut(Dst, Src: String; Desc: String = ''; Arg: String = ''; WorkDir: String = ''; Icon: String = ''; IconI: Integer = 0; Show: Integer = SW_SHOWNORMAL; HotKey: Word = 0): Boolean;
var
  u: IUnknown;
  s: IShellLink;
  f: IPersistFile;
  p: WideString;
begin
try
  u := CreateComObject(CLSID_SHELLLINK);
  s := u as IShellLink;
  f := u as IPersistFile;
  s.SetPath(PChar(Src));
  if (WorkDir = '') then WorkDir := ExtractFileDir(Src);
  s.SetWorkingDirectory(PChar(WorkDir));
  if (Icon = '') then Icon := Src;
  s.SetIconLocation(PChar(Icon), IconI);
  s.SetDescription(PChar(Desc));
  s.SetArguments(PChar(Arg));
  s.SetShowCmd(Show);
  s.SetHotkey(HotKey);
  p := Dst;
  Result := Succeeded(f.Save(PWChar(p), False));
except
  Result := False;
end;
end;
4

1 に答える 1

4

IShellLinkDataList::SetFlags()passingを使用する必要がありますSLDF_RUNAS_USER

手元にコードサンプルはありません。ただし、基本的なアプローチは次のようになります。

sldl := s as IShellLinkDataList;
flags := sldl.GetFlags();
sldl.SetFlags(flags or SLDF_RUNAS_USER);
于 2012-09-29T17:00:37.267 に答える