Windows 2000 以降 (任意の言語) の OS では、このパスが常に存在すると想定できますか? たとえば、一部の言語の win xp では、「Program Files」ディレクトリの名前が異なることを知っています。System32 フォルダーの場合は本当ですか?
ありがとう。オハッド。
Windows 2000 以降 (任意の言語) の OS では、このパスが常に存在すると想定できますか? たとえば、一部の言語の win xp では、「Program Files」ディレクトリの名前が異なることを知っています。System32 フォルダーの場合は本当ですか?
ありがとう。オハッド。
Windows が別のドライブ文字または別のディレクトリにインストールされている可能性があります。たとえば、以前の作業用 PC では、Windows は D:\WINNT にインストールされていました。
簡単な答えは、API 呼び出し GetSystemDirectory() を使用することです。これにより、目的のパスが返されます。
より長い答えは、「本当にこれを知る必要がありますか?」と尋ねることです。ファイルを Windows ディレクトリにコピーするために使用している場合は、本当にこれを行う必要があるかどうかを確認することをお勧めします。他のアプリケーションを非常に簡単に台無しにする可能性があるため、Windows ディレクトリにコピーすることはお勧めしません。パスを使用して DLL を検索している場合は、パスを指定せずに OS に依存して適切な DLL を見つけてみませんか? OS ファイルの一部を掘り下げている場合は、次の点を考慮してください。一般に、プログラムを将来の Windows バージョンで動作させたい場合は、Windows ディレクトリを明示的にいじらない方がよいでしょう。
いいえ、それを想定することはできません。
Windows は別のパスにインストールできます。解決策の 1 つは、GetSystemDirectory (Windows API の一部として実装) を呼び出して検索することです。
Windows は、別のハードドライブや別のフォルダーにインストールできます。%windir% または %systemroot% 環境変数を使用して、windows フォルダーに移動し、system32 を追加します。または、 %path% 変数を使用します。通常、最初の入り口であり、DLLなどのファイルを検索するための推奨される方法です。コメントによると、system32ディレクトリが最初の項目であることにあまり依存しないでください。ただし、 %path% のどこかにあると想定しても安全だと思います。
GetWindowsDirectory Win32 API を使用して現在の Windows ディレクトリを取得し、そこにSystem32を追加して、存在するかどうかを確認します。
「windir」環境変数を使用し、そのパスの末尾に「System32」を追加する方が安全な場合があります。ウィンドウが別のフォルダーまたは別のドライブにある場合があるため、「windir」はその場所を教えてくれます。
私の知る限り、system32 フォルダーは常に windows フォルダーの下に存在するはずです。
参考までに、ターミナル サーバー環境 (Citrix など) では、GetWindowsDirectory() はリモート ユーザーに一意のパスを返す場合があります。
仮想化されたデスクトップを使用する企業が増えるにつれて、開発者はこれを念頭に置く必要があります。