Linux で \folder1\folder2\、Windows で C:\folder1\folder2 と言った場合、C ドライブは Windows でルート フォルダとして扱われますか。
10 に答える
Windows では、現在の作業ディレクトリがその時点でどのドライブにあるかを基準にしています。現在のディレクトリが C ドライブにある場合、C:\ がルートになります。現在のディレクトリが D ドライブの場合、D:\ がルートになります。絶対根はありません。
ファイルシステムレベルでは、Win32 APIにはルートフォルダがありませんが、他の人が指摘しているように、シェルAPIにはあります。デスクトップ。シェル名前空間は、Explorer.exeである(グラフィカル)シェルで参照されます。
はるかに低いレベルでは、Windowsカーネルにもルートフォルダーがあり、レジストリとファイルシステムはそのサブフォルダーです。これは、デバイスドライバーを作成している場合に関係します。Object Manager名前空間は、WinObjと呼ばれるツールを使用して参照できます。
Windows CE を実行している場合、\ はルート ディレクトリです。これは Unix の / ルート ディレクトリに似ています。これは、質問に対する簡単な回答を得ることができる唯一の種類の Windows です。
Windows NT/2000/XP/2003 を実行している場合、最も近いのは NTLDR、NTDETECT.COM、BOOT.INI、および BOOTFONT.BIN ファイルを含むパーティションです。BIOS と MBR は、ブートを開始するドライブを見つけ、MBR をスキャンし、アクティブなパーティションを探すことで、このパーティションを見つけます。Microsoft はこれをシステム パーティションと呼んでいます。プログラムがこれがどのパーティションであったかをどのように見つけることができるかは完全にはわかりません。とにかく、これがどのドライブ文字かがわかれば、たとえば L という文字であれば、L:\ がルート ディレクトリであると言えます。ほとんどの場合、これはドライブ文字 C: になります。
また、Windows NT/2000/XP/2003 を実行している場合は、ディレクトリ \Windows などの Windows システム ファイルを含むパーティションもあります。Microsoft はこれをブート パーティションと呼んでいます。他の誰かが言ったように、シンボル %SystemDrive% からドライブ文字を取得できます。これがドライブ文字 Q の場合、Q:\ がシステム ドライブのルートであると言えます。
Vista を実行している場合、状況はさらに複雑になります。DVD を起動してインストールした場合、ブート パーティション (システム ファイルを含む) は C: であり、システム パーティション (ブート ファイルを含む) は D: です。ただし、それらが同じパーティションであり、パーティションが C: である場合を除きます。ただし、Windows を既に実行している状態でインストールし、DVD を挿入して、その Windows インストールでインストーラーを起動した場合、ドライブ文字はほとんど何でもかまいません。
Windows 95/98/ME では、BIOS と MBR はアクティブ パーティションで IO.SYS、COMMAND.COM などのファイルを探します。これは通常、ドライブ文字 C: を取得するため、ルート パーティションは C: になります。いつものように、Windows システム ファイルはディレクトリ \Windows またはその他のパーティションにインストールできます。
デスクトップについて話す人もいます。確かに、ログインしている各ユーザーにはデスクトップがあります。これは、各 Unix ユーザーのホーム ディレクトリに似ています。ルートディレクトリではないことは確かです。
補遺: 最後から 2 番目の段落で、Windows 95/98/ME について、「だからルート パーティションは C: になる」と入力しました。つまり、文字 C、コロン、バックスラッシュ、および文末のピリオド (ディレクトリ名の一部ではありません)。ページを表示すると、バックスラッシュが表示されません。しかし、この回答を編集してこの補遺を追加すると、入力したとおりに、バックスラッシュが正確に表示されます。
Windows では、特別なルート ノードはありません。代わりに、環境変数の形式でファイル システムにいくつかのエントリ ポイントがあります。
%アプリデータ%
%プログラムファイル%
%CommonProgramFiles%
%システムドライブ%
%SystemRoot%
Windows ではルートの概念が文脈から外れていても、ルートに相当するのは %SystemDrive% です。
他の人が言及しているように、Windows は、ファイル システムがすべてのデバイスに対して単一の論理「パス」スペースを持つ UNIX とは異なります (各デバイスは、/dev/floppy などのこのスペースにマウントされます)。
Windows では、各デバイス (ハードディスク パーティション、CD/DVD Rom、またはフラッシュ ドライブ) には、論理ドライブ文字の "\" ディレクトリをルートとする独自の論理パス空間があります。
Windows エクスプローラーは、すべてのドライブを「マイ コンピューター」の下に整理するという半分まともな仕事をしますが、これは純粋な UI シュガーであり、相対パスを介してあるドライブ文字から別のドライブ文字に移動する方法はありません。
ただし、個々のドライブ ファイルシステムは UNIX と同様に動作し、"\" という名前のルートを持ちます。
Windows は、UNIX のルート フォルダーの概念を共有していません。代わりに、ファイル ストレージを備えた各パーティションまたはデバイスには、独自のルート フォルダーがあります。ただし、C: パーティション/ドライブが (ほぼ) 常にオペレーティング システムのホームであることを考えると、そのルート フォルダーは Windows の場合と同じであると考えることができます。
Windows では、ルート フォルダーはデスクトップになります。Desktop->Computer->C:\folder1\folder2 (IShellFolder インターフェイスを使用)。
Unix ではファイル システムを使用して、システムのほとんどすべての部分を上から下まで表します。つまり、ルート ファイル システム フォルダーは論理的に「システム ルート」も表します。しかし、Windows では、ファイル システムはシステムにそれほど密接に結び付けられていないため、ファイル システム内には「システム ルート」という概念はありません。ヒューはそれをより詳細に説明します。
はい、「\」は現在のドライブのルート フォルダーです。たとえば、DOS コマンド "cd \" は現在のディレクトリをルート フォルダーに変更します。または、"cd \folder1\folder2" は "c:\folder1\folder2" に移動します。
実際のところ、Windows にはルート フォルダーがあります。フォルダーは、表示されていませんが、「i386」として知られています