以下の内容はhttps://pslabo.hatenablog.com/entry/2019/06/23/131629より取得しました。


Windows向けのsudo的なコマンドをDelphiで書く

先日、こういう記事をポストしたのですが、ここで調べた内容に基づいて Delphi で sudo 的なコードを書いてみました。

pslabo.hatenablog.com

やりたいことは、別のコマンドを管理者権限で実行したいだけなので、Delphi コマンドラインアプリケーションのプロジェクトを選択し、ShellExecute を 'run as' で実行するだけの簡単な実装です。

実行するコマンドとパラメータを以下のように取得して ShellExecute に渡しています。

  • ParamStr(1) で実行すべきコマンド名が渡される
  • ParamStr(2) - ParamStr(ParamCount) にコマンドへの引数が入る

実際の実装はこちら。

program sudo;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  Windows,
  ShellAPI,
  System.SysUtils;

var
  LParamIndex: Integer;
  LCommand   : String;
  LParameters: String;
  LCurrentDir: String;
  LhInstance : HWND;
begin

  if ParamCount >= 1 then
    try
      LCommand := ParamStr(1);

      if ParamCount >= 2 then
        for LParamIndex := 2 to ParamCount do
          LParameters := LParameters + ParamStr(LParamIndex) + ' '
      else
        LParameters := '';

      LCurrentDir := ExtractFilePath(ParamStr(0));

      LhInstance := ShellExecute(
        0,
        'runas',
        PChar(LCommand),
        PChar(LParameters),
        PChar(LCurrentDir),
        SW_SHOW);
    except
      on E: Exception do
        Writeln(E.ClassName, ': ', E.Message);
    end;

end.



以上の内容はhttps://pslabo.hatenablog.com/entry/2019/06/23/131629より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14