Windows の組み込みライブラリの環境変数?

Windows の組み込みライブラリの環境変数?

Windows 7 は既存のライブラリの環境変数を定義していますか? 開く/保存ダイアログやプロンプトからパスを入力するときによく使用するので、興味がありますRun。たとえば、現在のユーザーの Firefox 設定ディレクトリにアクセスするには、次のようにしますrun

%APPDATA%\Mozilla\Firefox

これは便利なショートカットなので、ライブラリ パスでも同様のショートカットを見つけたいと思っていました。たとえば、次のようになります。

%LIBRARIES%\Music\
%MUSIC%\

ライブラリは1つ以上のトップレベルのフォルダを集約するものなので、曖昧さが生じる可能性があると理解しています。Microsoftにはリスト環境変数は多数ありますが、そのほとんどは Windows UI からはアクセスできません。この質問これも素晴らしいリストにリンクしていますが、ユーザーのDocumentsフォルダー、Musicフォルダーなどは含まれていません。

答え1

Windows ライブラリは、実際にはxmlフォルダーのコレクションを表示する方法を定義するファイルです。Windows に組み込まれている特別なシェル拡張機能を使用して表示されます。実際のフォルダーではないため、ファイルやサブフォルダーにパス経由で直接アクセスすることはできません。

開けるエクスプローラーウィンドウでは、アドレスバーに次のように入力できます。

libraries\music

これはない開く/保存ダイアログのボックスからは機能するようですFile Name。コマンドでも機能しませんrun

対処法:

Windows Vistaでは「既知のフォルダ」という概念です。これは、古い「定数の特殊アイテムIDリスト」(CSIDLXPで使用される方法論には、素晴らしい投稿Windows ブログで、この変更について説明し、ファイル構造の概要を示します*.library-ms

既知のフォルダにはGUIDがあります。コマンドラインからアクセスするには、URIの前に を付けますknownfolder:数十の定義Musicたとえば、現在のユーザーのフォルダーにアクセスするには、run次のコマンドを実行します。

knownfolder:{4BD8D571-6D19-48D3-BE97-422220080E43}

これにより、事前に定義されたデフォルト音楽フォルダ。そのため、ライブラリのフォルダを変更した場合、残念ながらこれは機能しません。

ライブラリのデフォルトフォルダはアクセスしたプログラム的に使用してIShellライブラリインターフェースですが、これは私の当初の質問の範囲外です。最善の方法は、次のいずれかであると思われます。

  1. 環境変数を既知のパスに手動でマッピングする
  2. または、GUID を使用して環境変数を手動でマップします。この場合の利点は、それをシステム変数にして、すべてのユーザーに対して機能させることです。

答え2

音楽フォルダを指定したい場合は%music%、システムに新しい環境変数を追加するだけです。

ライブラリを指定したい場合は、たとえば%Libraries%にショートカットを作成し、ショートカットを指定する新しい環境変数を作成します。(ただし、サブフォルダに直接入力することはできませんが、ライブラリ内にあるサブフォルダ用に新しい変数を作成できます)c:\c:\libraries

%music%その後、run withまたはから両方を呼び出すことができます。%Libraries%

関連情報