0

谁能描述如何在 DotNet 的屏幕截图中获取以下文件夹以及这些文件夹的用途?下面在 Dotnet 命名空间中描述为“Missed”的文本中。

用户文件夹 Windows 资源管理器

我只能通过以下方式获取以下文件夹 My.Computer.FileSystem.SpecialDirectories

.

财产....目的

所有用户应用程序数据

应用程序应存储所有用户设置的目录(通常是 C:\ProgramData\WindowsApplication1\WindowsApplication1\1.0.0.0)。

当前用户应用程序数据

应用程序应存储当前用户设置的目录(通常为 C:\Users\PeterBlue\AppData\Roaming\WindowsApplication1\WindowsApplication1\1.0.0.0)。

桌面

当前用户的桌面目录(通常为 C:\Users\PeterBlue\Desktop)。

我的文件

当前用户的 My Documents 目录(通常为 C:\Users\PeterBlue\Documents)。

我的音乐

当前用户的 My Music 目录(通常为 C:\Users\PeterBlue\Music)。

我的照片

当前用户的 My Pictures 目录(通常为 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 所有用户目录 ex 的命令行:现在我们可以看到真正的文件夹是“C:\Users\Public\Documents”,而不是“C:\Users\All Users”通过Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)

4

3 回答 3

3

Note you should not use those profile folders to guess anything that you can retrieve from Environment.GetFolderPath. Anything you can get from there can be changed by SHSetFolderPath or some other tool. The supported way to retrieve those folders are documented already (Environment.GetFolderPath, SHGetFolderPath etc)

  • Administrator/user: default location for profile of the user named Administrator/user. Can be retrieved via GetUserProfileDirectory with a user token.
  • Default: default location of the template user's profile, which is used when creating a new user, can be retried by GetDefaultUserProfileDirectory
  • 默认用户:一些 OEM 可能会错误地创建此文件夹。可能是为 XP 粗心编写的代码的剩余部分,其中默认用户配置文件存储在GetProfilesDirectory \Default User 中。除非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 回答