Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET 2.0中获取Environment.SpecialFolders.MyVideo文件夹?_C#_.net_Windows_.net 2.0 - Fatal编程技术网

C# 如何在.NET 2.0中获取Environment.SpecialFolders.MyVideo文件夹?

C# 如何在.NET 2.0中获取Environment.SpecialFolders.MyVideo文件夹?,c#,.net,windows,.net-2.0,C#,.net,Windows,.net 2.0,有谁能告诉我如何在.NET2.0中获取Environment.SpecialFolders.MyVideo文件夹吗 在.NET 4.0中,MyVideo文件夹列在枚举环境.SpecialFolders中,但在.NET 2.0下不存在。如果您必须在.NET 2.0下找到具有不同Windows本地化和操作系统版本的文件夹,您会选择哪种方式?您必须自己使用pinvoke SHGetFolderPath。从中获取声明和示例用法。第二个参数通过14。至少需要Windows XP。若要获取此目录,请尝试以下

有谁能告诉我如何在.NET2.0中获取
Environment.SpecialFolders.MyVideo
文件夹吗


在.NET 4.0中,MyVideo文件夹列在枚举环境.SpecialFolders中,但在.NET 2.0下不存在。如果您必须在.NET 2.0下找到具有不同Windows本地化和操作系统版本的文件夹,您会选择哪种方式?

您必须自己使用pinvoke SHGetFolderPath。从中获取声明和示例用法。第二个参数通过14。至少需要Windows XP。

若要获取此目录,请尝试以下操作:

DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
string path = di.FullName.Replace(di.Name, "Videos");

di.FullName.Replace(di.Name,“视频”)目的是什么??在di中,你有关于文档文件夹的信息,然后在路径中,我在视频中更改文档文件夹名称-在这里,你会觉得有点黑客,即使它很短。我接受了另一个答案,但如果这样做有效的话,它看起来很整洁:-)我的假设是文档、图片、音乐、视频文件夹都有相同的父文件夹,所以您只需更改名称即可获得正确的父文件夹(System.Diagnostics.Process.Start(path);-works Fine这是我现在使用的(谢谢,也很有用):公共类文件夹{public static string getFolderPath(CSIDL folder){StringBuilder SB=new StringBuilder();SHGetFolderPath(IntPtr.Zero,(int)folder,IntPtr.Zero,0x0000,SB);return SB.ToString();}[DllImport(“shell32.dll”)]private static extern int SHGetFolderPath(IntPtr hwndOwner,int nFolder,IntPtr hToken,uint dwFlags,[Out]StringBuilder pszPath);public enum CSIDL{MYVIDEO=14}这段代码中有一个严重的错误,请将其改为新的StringBuilder(259)。string UserVideoPath=Folders.getFolderPath(Folders.CSIDL.MYVIDEO);更多的文件夹指针是:ADMINTOOLS=0x30,ALTSTARTUP=0x1d,APPDATA=0x1a,BITBUCKET=10,CDBURN_AREA=0x3b,COMMON_ADMINTOOLS=0x2f,COMMON_ALTSTARTUP=30,COMMON_APPDATA=0x23,COMMON_DESKTOPDIRECTORY=0x19,COMMON_DOCUMENTS=0x2e,COMMON_FAVORITES=0x1f,COMMON_MUSIC=0x35,COMMON_PICTURES=0x36,COMMON_PROGRAMS=0x17,COMMON_STARTMENU=0x16,COMMON_STARTUP=0x18,COMMON_TEMPLATES=0x2d,COMMON_VIDEO=0x37,控件=3,COOKIES=0x21,桌面=0,DESKTOPDIRECTORY=0x10,驱动器=0x11,FAVORITES=6,标志_CREATE=0x8000,FONTS=20,HISTORY=0x22,INTERNET=1,INTERNET\u CACHE=0x20,LOCAL\u APPDATA=0x1c,MYDOCUMENTS=12,MYMUSIC=13,MYPICTURES=0x27,MYVIDEO=14,NETHOOD=0x13,NETWORK=0x12,PERSONAL=5,PRINTERS=4,PRINTHOOD=0x1b,PROFILE=40,PROFILES=0x3e,PROGRAM\u FILES=0x26,PROGRAM\u FILES\u COMMON=0x2b,PROGRAMS=2,RECENT=8,SENDTO=9,STARTMENU=11,STARTUP=7,SYSTEM=0x25,TEMPLATES=0x15,WINDOWS=0x24是的,谢谢,它应该是一个有限的新StringBuilder(259);添加了这些指针以供参考,我相信我以后还会看到这个问题。