1

FO_DELETE パラメータを指定して SHFileOperationW 関数を使用して、ファイルをごみ箱に移動しています (ごみ箱が無効になっていない場合)。

問題は、管理者以外のユーザーとしてログインし、アプリケーションを管理者として実行する場合です。ファイルは管理者のごみ箱に移動されます。

現在ログに記録されている管理者以外のユーザーのごみ箱にファイルを移動することは可能ですか?

私の考えは、昇格されていない別のプロセスを実行し、そこからごみ箱に移動することでした。しかし、より良い解決策が存在するかどうかはわかりません。インターネットで答えを見つけようとしましたが、成功しませんでした。

4

2 に答える 2

-1

このルーチンを使用する必要があるときは、次のコマンドを使用しました。役に立つことを願っています。

Delphi 2010 および Windows 8 でテストします。

procedure TForm2.Button1Click(Sender: TObject);
var
  vMsg : string;
begin
  // If want permanently delete
  //deletefile(edit1.text);

  SendFileToTrash(edit1.Text, vMsg);

  if (vMsg = '') then
  begin
    ShowMessage('File sent to the trash.');
  end else begin
    ShowMessage(vMsg);
  end;

end;


procedure TForm2.SendFileToTrash(const aFileName: TFileName; var MsgError: string);
var
  Op: TSHFileOpStruct;
begin
  {Very importante
     Include in Uses  SysUtils and ShellAPI;
  }
  MsgError := '';

  if not (FileExists(aFileName)) then
  begin
    MsgError := 'File not found.';
    Exit;
  end;

  FillChar(Op, SizeOf(Op), 0);

  Op.wFunc := FO_DELETE;
  Op.pFrom := PChar(aFileName+#0);
  Op.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;

  if (ShFileOperation(Op) <> 0) then
  begin
      MsgError := 'Could not send the file to the trash.';
  end;

end;
于 2013-11-17T17:19:12.410 に答える