特定のユーザーのローカルアプリケーションデータフォルダーを取得するには、そのユーザーのログイン詳細を入力する必要はありません。特定のユーザーのSHGetFolderPath()
SHGetFolderPath()は、ローカルのappdataフォルダを取得したいユーザーのアクセストークンを受け入れることができますが、アクセストークンを取得するにはユーザーのパスワードを入力する必要があります。また、docsによると、この上ではサポートされません< =のWindows 2000
レジストリキーます。HKCU \ Software \ Microsoft \ Windowsの\ CurrentVersionの\ Explorerの\シェルフォルダはの場所が含まれているのAppData値を含み、現在のユーザーのローカルappdataフォルダ...特定のユーザーのHKCUハイブを技術的にマウントしてこの値にアクセスすることができます。しかし、マイクロソフトはこのキーの使用を強く妨げているようですが、時には不正確かもしれないと聞いています。
皮肉なことに、Windowsでは、管理者アカウントは、エクスプローラを開いて正しい場所を参照すれば、すべてのユーザーのappdataフォルダ内のすべてのデータに簡単にアクセスして変更できますが、プログラムで特定のユーザーのappdataフォルダーの場所を取得する簡単な方法です。
他にもオプションがありますか?現在、レジストリにアクセスするのが最善の選択肢だと思われますが、私は公式のものを使用したいと思います。
何か提案がありがとうございます。
私はRegLoadKey()関数を見て、それを使用すると考えていました...しかし、当時私は馬鹿馬鹿しく遅く信頼できないことなく、私が望んでいたことをすることができるとは確信できませんでした。しかし、あなたの答えは私に実際にそれを試してみるインスピレーションを与えました。それは私がその仕事をすることができるように見えます...それはどちらかと思ったようにそれほど遅くはありません。 この機能が必要なクライアントにはうまくいきません。彼らは、AD /ターミナルサービスを使用する多くのコンピュータと、おそらくローミングするユーザープロファイルも持っています。 RegConnectRegistry()は後で便利になるかもしれません。 – beepboopbopbop
RegLoadKeyの速度が問題の場合は、RegLoadKey呼び出しを保存するユーザーのSIDをHKEY_USERSで調べることはできますが、既に読み込まれているプロファイルに対してのみ機能します。 – Anders