C# 查找Windows计算机上所有用户的最佳文件夹
我们正在制作一款游戏,很快就会添加关卡编辑器功能。我们希望用户能够把他下载的关卡放到一个文件夹中,然后在游戏中玩,而不需要任何麻烦。所以,我们正在寻找一个任何人都可以找到、打开、写入、读取并且是多用户的文件夹。在WindowsVista/7上,文件夹/Users/Public/看起来是一个很好的候选者。但是,它没有列在.net enum System.Environment.SpecialFolder中。我已经检查了所有这些,并检查了它们在不同Windows版本上的性能,没有一个符合我的要求 我确实找到了Environment.SpecialFolder.CommonApplicationData,这有点可行,但该文件夹是隐藏的(C:\ProgramData),我假设大多数用户不会显示隐藏的文件夹 现在看来,我们不得不接受个人文档文件夹,但我们真的需要一个多用户文件夹 有人有什么建议吗C# 查找Windows计算机上所有用户的最佳文件夹,c#,.net,C#,.net,我们正在制作一款游戏,很快就会添加关卡编辑器功能。我们希望用户能够把他下载的关卡放到一个文件夹中,然后在游戏中玩,而不需要任何麻烦。所以,我们正在寻找一个任何人都可以找到、打开、写入、读取并且是多用户的文件夹。在WindowsVista/7上,文件夹/Users/Public/看起来是一个很好的候选者。但是,它没有列在.net enum System.Environment.SpecialFolder中。我已经检查了所有这些,并检查了它们在不同Windows版本上的性能,没有一个符合我的要求 我
(硬编码c:\Users\Public\是不可能的,它只能在英文系统上工作)您能在应用程序的目录中放置一个文件夹,然后为每个用户(当他们第一次使用该功能时)在其主目录中创建一个到该文件夹的快捷方式吗?我知道这不是您想要的“通用”文件夹,但这会起作用吗?Doug Hennig关于: 此文件夹没有CSIDL值,但环境变量PUBLIC指向它,因此可以使用GETENV('PUBLIC')确定其位置。默认情况下,此变量包含Windows Vista中的C:\Users\Public。该变量在Windows XP中不存在,因此您的代码必须处理GETENV('PUBLIC')返回空值的情况 或者,您可以使用CSIDL_COMMON_DOCUMENTS指定的文件夹的父文件夹,该文件夹在XP上提供C:\DOCUMENTS and Settings\All Users\DOCUMENTS,在Vista上提供C:\Users\Public\DOCUMENTS
我认为
Environment.SpecialFolder.CommonDocuments
可能是存放文件的合适位置。这可能会有所帮助。见此帖:
在Windows Vista或更高版本中:
%公共%C:\Users\PUBLIC
在Windows XP中:
%ALLUSERSPROFILE% C:\Documents and Settings\All Users
对于以前的操作系统,以下内容应在Vista/Win7上返回
C:\Users\Public\Documents\
,并返回C:\Documents and Settings\All Users\Documents
[System.Runtime.InteropServices.DllImport("shell32.dll")]
static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken,
uint dwFlags, [Out] StringBuilder pszPath);
public string GetSharedDocsFolder() {
StringBuilder sb = new StringBuilder();
int CommonDocumentsFolder = 0x002e;
SHGetFolderPath(IntPtr.Zero, CommonDocumentsFolder, IntPtr.Zero, 0x0000, sb);
return sb.ToString();
}
您需要是管理员才能使用应用程序的directoryCommonDocuments听起来很棒,但是它是.NET4.0,而我使用的是Mono1.2.5(类似于.NET2.0),所以我必须做出类似上面的事情。Thank.CSIDL_COMMON_DOCUMENTS是适当的CSIDL值。请注意,默认情况下,所有用户都可以写入此位置,但用户不能写入其他用户创建的文件或文件夹。如果您希望多个非管理员用户能够修改同一文件,则必须明确管理权限,无论您在归档系统中的何处创建文件/文件夹。