Windows向けのsudo的なコマンドをDelphiで書く
先日、こういう記事をポストしたのですが、ここで調べた内容に基づいて Delphi で sudo 的なコードを書いてみました。
やりたいことは、別のコマンドを管理者権限で実行したいだけなので、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.