2016-05-10 11 views
0

にファイルをコピーする必要があります。フォルダにDelphiを使用しています。私はそれが簡単にCopyFile()機能を持つことができることを知っている場合、そのユーザーがプログラムファイルフォルダにアクセスすることができます。しかし、そのユーザーがプログラムファイルにアクセスできない場合、私は特定のユーザー(いくつかの関数はユーザーとパスワードのパラメーターとファイルのコピーを渡すことができます)でそれを行う必要があります。これどうやってするの?Windowsの資格情報を使用してファイルをコピーする

+0

UACがラウンドしないので、間違ったアプローチです。マニフェストにrequireAdministratorオプションを追加します。 –

+0

"プログラムファイル"のファイル/サブフォルダを操作する場合は、プログラムを "requireAdministrator"としてマニフェストする必要があります。これは、アドミニストレータ資格情報を持つユーザーだけがプログラムを実行できることを意味します。標準ユーザーにプログラムを使用させたい場合は、 "Program files"の操作をやめてください。マニフェストから "requireAdministrator"を省略することができます。 –

答えて

2

私が知る限り、昇格した権利で新しいプロセスを開始することはできません。 コピーを作成して昇格した権限で起動する2番目のアプリを作成するか、昇格した権限で自分のアプリを再起動する必要があります。

これを行う方法は、stackoverflowの多くの場所に示されています。ここに: use shell execute to run cmd as Admin

+0

偽装はどうですか、それは動作しますか? [ユーザーに資格情報を求める](https://msdn.microsoft.com/en-us/library/windows/desktop/ms717794.aspx)、['LogonUser()'](https://msdn.microsoft。 com/en-us/library/windows/desktop/aa378184.aspx)と['ImpersonateLoggedOnUser()'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa378612.aspx)最後に 'CopyFile()'を実行します。 –

+1

私は実際に証明することはできませんが、アプリケーションが再起動されることなく(または昇格された権限を持つ別のプロセスを開始することなく)独自の特権を奪うことはできません。 Sysinternals Autorunsツールのようなシステムツールでさえそのようにしています。そしてSysinternalsはマイクロソフトに属しているので、その方法を知っておくべきです... –

関連する問題