2011-07-28 7 views
1

は、アクセス権に関係なく、私のハードドライブ(C:パーティション内)のすべてのファイルを見つける必要があります。 する(Windows XP Proは、C#を使用して)以前の質問では許可に関係なくすべてのファイルを検索する(Windows XP、C#)

を、私は言われた:

"C:\システムボリュームInforamtion" それが唯一のSYSTEMユーザーに割り当てられているため、フォルダを閲覧することができません。その内部を見るためには、その所有権を取得する必要があります。ただし、これはセキュリティ上の理由から推奨されていません。 - Alex Mendez

私はWindowsで数年間働いていますが、これはSYSTEMユーザーについて聞いたことがあります(これまでの多くの不満を説明しています)。私は、 "管理者"はUNIXの "root"ユーザと似ていると想定していました。

Windowsでは、すべてを所有する究極のユーザーがいますか?

もしそうなら、そのユーザーは誰ですか?

もしそうなら、そのユーザーとしてC#プログラムを実行して、すべてのファイルを見ることができますか?

他の方法はありますか?

+0

プログラムでこれを実行しようとしていますか? –

答えて

0

これらのフォルダ*にアクセスする唯一の方法は、カーネルレベルのユーザのCPU自身のパーティションであるRing-0として実行することです。マルウェア/ルートキットの一部がシステムに侵入する可能性もあります。

これは.NETで実現できるものではないと確信していますが、実際にはシステムレベルのドライバ(.sysファイル)を作成しなくても実際に実現できるかどうかはわかりません。

ファイルシステムはOSに対応しています。NTFSでフォーマットされたドライブ上にあり、コンテンツが暗号化されている場合、スーパーリードオールドライバはファイルを復号化しません。

編集:これらのフォルダはシステムフォルダです。BackupRead/Write関数を呼び出すことができれば、他のデータにアクセスする可能性があります。

+0

個々のファイルセキュリティの条件を除いて、管理者はオブジェクトの所有権をプログラマチックに取得できれば、すべての所有権を取得してアクセスすることができますが、そのファイルから意味のある情報が得られるわけではありません。 –

0

私はFILE_FLAG_BACKUP_SEMANTICSがほとんどあなたが必要とすることができると信じています。

+0

これは.NETのものではなく、PInvokeらがこれらの機能を利用できるかどうかはわかりませんが、このスレッドはこれらのセマンティクスに基づいて正しい方向にあなたを指し示すかもしれません:http://social.msdn.microsoft.com/forums/ja-US/vcgeneral/thread/d9397d33-b35f-407e-920d-b2dccdf969ec / –

0

アプリケーション(またはコマンドプロンプト)を対話的に(SYSTEMとして)実行できます。たとえば、this questionへの受け入れられた回答を参照してください。アプリケーションがインタラクティブなコンテキストを実行すると、システムボリューム情報を直接開くことができます。

[明確化を追加するために編集:]のWindowsで

、すべてのものを所有している究極のユーザーはありますか?

いいえ。デフォルトでは、管理者(および暗黙的にシステム)に付与されているオブジェクトの所有権を許可する特権SeTakeOwnershipPrivilegeがあります。オブジェクトの所有者は、自分自身にアクセスできるように常にACLを変更できます。

SeBackupPrivilegeという権限が、管理者とバックアップ演算子(およびSystem)に付与されています。ファイルの読み取りを許可してバックアップを実行し、通常の読み取り操作をバイパスします。これにより、通常のアクセス制御の制限を回避して、あらゆるファイルへの読み取りアクセスを効果的に許可します。

もしそうなら、そのユーザーは誰ですか?

このようなユーザーはいません。既定では、WindowsはそのディレクトリのACLによってC:\ System Volume InformationへのSYSTEMアクセスのみを許可します。

もしそうなら、私はすべてのファイルを見ることができるようにそのユーザーとして私のC#プログラムをどのように動かすのですか?

SYSTEMとしてプログラムを実行すると、すべてのファイルを必ずしも表示することはできませんが、上記の方法でシステムボリューム情報を表示することができます。私はバックアップオペレータの特権を持っていると思うと、バックアップフラグとの読み取り操作を行う権限に関係なくすべてのファイルを見るための唯一のメカニズムです。

0

いいえ、すべてにアクセスできるrootユーザーはいません。 SYSTEMまたは管理者または他のユーザーとして実行しても問題は解決しません。あなたは非常に複雑な問題を抱えており、C#でそれを達成することは追加の課題になるでしょう。私はC#の使用を再考することをお勧めします。

hereを開始し、トークンの権限を変更する方法については、FILE_FLAG_BACKUP_SEMANTICSフラグの説明とそのリンクを参照してください。基本的には、読み込みアクセス権のない各ファイル/ディレクトリのアクセス権を一時的に変更する必要があります。

関連する問題