0

DotNetのスクリーンショットで次のフォルダーを取得する方法と、これらのフォルダーの目的を誰かが説明できますか?以下のテキストでは、Dotnet名前空間で「Missed」と説明されています。

ユーザーフォルダーWindowsエクスプローラー

次のフォルダしか取得できません My.Computer.FileSystem.SpecialDirectories

プロパティ....目的

AllUsersApplicationData

アプリケーションがすべてのユーザーの設定を保存するディレクトリ(通常、C:\ ProgramData \ WindowsApplication1 \ WindowsApplication1 \ 1.0.0.0など)。

CurrentUserApplicationData

アプリケーションが現在のユーザーの設定を保存するディレクトリ(通常、C:\ Users \ PeterBlue \ AppData \ Roaming \ WindowsApplication1 \ WindowsApplication1 \ 1.0.0.0など)。

デスクトップ

現在のユーザーのデスクトップディレクトリ(通常、C:\ Users \ PeterBlue \ Desktop)。

私の文書

現在のユーザーのマイドキュメントディレクトリ(通常、C:\ Users \ PeterBlue \ Documents)。

私の音楽

現在のユーザーのマイミュージックディレクトリ(通常、C:\ Users \ PeterBlue \ Music)。

私の写真

現在のユーザーのマイピクチャーディレクトリ(通常、C:\ Users \ PeterBlue \ Pictures)。

プログラムファイル

Program Filesディレクトリ(通常、C:\ Program Files)。

プログラム

現在のユーザーのプログラムディレクトリ(通常、C:\ Users \ PeterBlue \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs)。

臨時雇用者

現在のユーザーの一時ディレクトリ(通常、C:\ Users \ PeterBlue \ AppData \ Local \ Temp)。

DotNet名前空間で欠落している情報と欠落している情報:

  • 管理者
  • デフォルト
  • デフォルトユーザー(キーサインがあるのはなぜですか、アクセス方法は?)
  • ユーザー

*独自のソリューション*

フォルダの問題から抜け出すための私自身の解決策は、例でコマンドラインcmdを使用することDir /ah すべてのユーザーディレクトリ です。「C:\ Users \ All Users」の代わりに、実際のフォルダが「C:\ Users \ Public \ Documents」であり、到達可能であることがわかります。スルートEnvironment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)

4

3 に答える 3

3

これらのプロファイル フォルダーを使用して、Environment.GetFolderPath から取得できるものを推測しないでください。そこから取得できるものはすべて、SHSetFolderPath またはその他のツールで変更できます。これらのフォルダーを取得するサポートされている方法は、既に文書化されています (Environment.GetFolderPath、SHGetFolderPath など)。

  • Administrator/ user : Administrator/ userという名前のユーザーのプロファイルのデフォルトの場所。ユーザー トークンを使用してGetUserProfileDirectoryを介して取得できます。
  • デフォルト: 新しいユーザーの作成時に使用されるテンプレート ユーザーのプロファイルのデフォルトの場所は、GetDefaultUserProfileDirectoryによって再試行できます。
  • Default User : 一部の OEM は、このフォルダーを誤って作成する場合があります。デフォルトのユーザー プロファイルがGetProfilesDirectory \Default Userに格納されている XP 用に不用意に書かれたコードの残り物である可能性があります。デフォルトのユーザー プロファイル ディレクトリがSysPrepによって変更されない限り、このフォルダをカスタマイズしても効果はありません。このような問題を回避するには、文書化された API を使用することを常にお勧めします。

Environment.SpecialFolder はCSIDL値のラッパーであるため、既定のユーザー プロファイルまたは別のユーザーのフラグは含まれません。

于 2013-02-01T00:54:46.030 に答える
2

次のような方法を探していると思います。

Environment.GetFolderPath(Environment.SpecialFolder.Mydocuments);

としても

Environment.SpecialFolder.ApplicationData
Environment.SpecialFolder.System
Environment.SpecialFolder.CommonApplicationData
Environment.SpecialFolder.CommonProgramFiles
Environment.SpecialFolder.Cookies
Environment.SpecialFolder.Desktop
Environment.SpecialFolder.DesktopDirectory
Environment.SpecialFolder.Favorites
Environment.SpecialFolder.History
Environment.SpecialFolder.InternetCache
Environment.SpecialFolder.LocalApplicationData
Environment.SpecialFolder.MyComputer
Environment.SpecialFolder.MyMusic
Environment.SpecialFolder.MyPictures
Environment.SpecialFolder.Personal
Environment.SpecialFolder.ProgramFiles
Environment.SpecialFolder.Programs
Environment.SpecialFolder.Recent
Environment.SpecialFolder.SendTo
Environment.SpecialFolder.StartMenu

そして、ここにあるもの:ここ

于 2013-01-28T11:30:13.320 に答える
0

次を使用して、現在のユーザー ディレクトリと親ユーザー ディレクトリを取得できます。

//get the current user's home directory (C:/Users/user)
string userDirectory = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
//get the Users directory (C:/Users)
string homeUsersDirectory = userDirectory.Substring(0, userDirectory.LastIndexOf("\\"));

これはあなたが探しているものですか?
他のユーザーのユーザー ディレクトリを取得できるかどうかはわかりません。ユーザー名がわかっている場合は、ユーザー名をhomeUsersDirectory文字列に追加することで取得できます。
ただし、デフォルトでは、ディレクトリへの書き込み権限はありません。

于 2013-01-31T09:13:13.827 に答える