2009-08-31 22 views
0

ユーザschmoe_jは、ファイルをschmoe_jが書き込めないディレクトリにコピーするアプリケーションを実行できますか?C#アプリケーションレベルの権限がユーザーの権限よりも大きいですか?

+0

どのバージョンのウィンドウですか?ネットワークドライブまたはローカルマシン?これらの質問に対する回答によって、答えが異なる場合があります。 –

+0

ネットワークドライブ上のWindows Server 2003。 –

答えて

2

いいえ、ファイルのアクセス権は、C#コードが実行されるよりはるかに低いレベルにあるファイルシステムによって処理されます。 C#コードはファイルシステムのセキュリティを直接バイパスできません。アプリケーションがschmoe_jとして実行されている場合、schmoe_jに書き込みアクセス権がないディスク上の場所に書き込むことはできません。

1つの例外は、schmoe_jにバックアップ&の復元権限がある場合です。この場合、ディスク上のどこにでも書き込むことができます。通常のユーザーはこの権限を持っていません。これは非常に危険な権限です。

他の理論的な方法があります。たとえば、標準ユーザーがディスク上の任意の場所に書き込むことができるような、安全でないサービスがボックスにある場合などです。そのようなケースは修正する必要があるセキュリティホールです。

0

使用するクラスによっては、通常、ディレクトリに書き込むための適切なアクセス許可がないと例外がスローされます。

たとえば、MSDNによれば、呼び出し元に必要なアクセス許可がない場合、File.CreateFile.Copyを呼び出すときにUnauthorizedAccessExceptionがスローされます。

2

実行可能ファイルにマニフェストを含めて、アプリケーションがより高い特権で実行されるようにすることができます。

Adding a UAC Manifest to Managed Codeを参照してください。

+1

Vista固有の、しかし良い答えです。 – dnord

1

私は通常、これが手渡される方法は、高められた許可の下で実行されるが、表面積は非常に小さく、GUIはないサービス(またはサービスアプリケーション)を使用することだと思います。ユーザーは、ユーザーのアカウントでできることを行う低い権限で実行されているアプリケーションとやりとりします。ファイルをドロップオフフォルダに置いたり、データベースに書き込んだりします。

1

アプリケーションはユーザの権利の下で実行し、ユーザがそれを行うことができれば、アプリケーションはそれを行うことができない。

ただし、アプリケーションは別のユーザーを偽装しようとする可能性があります。その場合、そのディレクトリにアクセスできます。これは、アプリが別のユーザーの権利を一時的に取得することに関連していました。これはASP.NETが非常に頻繁に動作する方法です。

これは、ユーザーが偽装されたユーザーの資格情報を提供する必要があることを示しています。

Articleこれを実証しています。

1

実行可能アプリですか?はい。これらのファイルをコピーしようとすると、UnauthorizedAccessExceptionが投げられますが、以前はコピーされません。

関連する問題