也说c#获取windows特殊路径
雖然是古老的問題,最近用到這個,查一下還不少東東吶
一、使用Environment.SpecialFolder
該方法最簡單,直接使用即可,只是提供的特殊路徑比較少。
(1)使用方法:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
(2)獲取參數:
foreach (Environment.SpecialFolder s in
??????????????????? Enum.GetValues(typeof(Environment.SpecialFolder)))
??????????????? {
??????????????????? Console.WriteLine("{0} folder : {1}",
??????????????????????? s, Environment.GetFolderPath(s));
??????????????? }
(3)輸出參數列表:
Desktop = C:\Documents and Settings\gmj\桌面
Programs = C:\Documents and Settings\gmj\「開始」菜單\程序
Personal = E:\我的文檔
Personal = E:\我的文檔
Favorites = C:\Documents and Settings\gmj\Favorites
Startup = C:\Documents and Settings\gmj\「開始」菜單\程序\啟動
Recent = C:\Documents and Settings\gmj\Recent
SendTo = C:\Documents and Settings\gmj\SendTo
StartMenu = C:\Documents and Settings\gmj\「開始」菜單
MyMusic = E:\我的文檔\My Music
DesktopDirectory = C:\Documents and Settings\gmj\桌面
MyComputer =
Templates = C:\Documents and Settings\gmj\Templates
ApplicationData = C:\Documents and Settings\gmj\Application Data
LocalApplicationData = C:\Documents and Settings\gmj\Local Settings\Application Data
InternetCache = C:\Documents and Settings\gmj\Local Settings\Temporary Internet Files
Cookies = C:\Documents and Settings\gmj\Cookies
History = C:\Documents and Settings\gmj\Local Settings\History
CommonApplicationData = C:\Documents and Settings\All Users\Application Data
System = C:\WINDOWS\system32
ProgramFiles = C:\Program Files
MyPictures = E:\我的文檔\My Pictures
CommonProgramFiles = C:\Program Files\Common Files
合計:23行
二、使用Environment.GetEnvironmentVariable
該方法可提供更多內容。
(1)使用方法:
string path = Environment.GetEnvironmentVariable("ALLUSERSPROFILE");
(2)獲取參數:
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
??????????????? {
??????????????????? Console.WriteLine("? {0} = {1}", de.Key, de.Value);
??????????????? }
(3)輸出參數列表:
Path = D:\Program Files\Sun\OPhone SDK\tools;D:\Program Files\Sun\android-sdk-windows-1.5_r2\tools;D:\Program
Files\Sun\SDK\jdk\bin;D:\Program Files\Sun\SDK\jdk\jre\bin;E:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program
Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program
Files\Microsoft SQL Server\90\Tools\binn\;D:\Program Files\CodeSmith\v5.0\;D:\Program Files\Symantec\pcAnywhere\;C:\Program
Files\Ixia\IxChariot;D:\Program Files\Sun\SDK\bin;
? TEMP = C:\DOCUME~1\gmj\LOCALS~1\Temp
? SESSIONNAME = Console
? PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
? USERDOMAIN = EVER62
? PROCESSOR_ARCHITECTURE = x86
? SystemDrive = C:
? APPDATA = C:\Documents and Settings\gmj\Application Data
? JSERV = E:\oracle\ora92/Apache/Jserv/conf
? windir = C:\WINDOWS
? _ACP_INCLUDE = D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Visual Studio 8
\VC\atlmfc\include;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;D:\Program Files\Microsoft Visual Studio 8
\SDK\v2.0\include
? TMP = C:\DOCUME~1\gmj\LOCALS~1\Temp
? USERPROFILE = C:\Documents and Settings\gmj
? ProgramFiles = C:\Program Files
? FP_NO_HOST_CHECK = NO
? HOMEPATH = \Documents and Settings\gmj
? COMPUTERNAME = EVER62
? _ACP_PATH = D:\Program Files\Microsoft Visual Studio 8\VC\bin;D:\Program Files\Microsoft Visual Studio 8
\VC\PlatformSDK\bin;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;D:\Program Files\Microsoft Visual Studio 8
\Common7\tools;D:\Program Files\Microsoft Visual Studio 8\Common7\ide;C:\Program Files\HTML Help Workshop;D:\Program
Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\Program Files\Microsoft Visual
Studio 8\;D:\Program Files\Microsoft Visual Studio 8\\SDK\v2.0\bin;C:\WINDOWS\SysWow64;D:\Program Files\Microsoft Visual Studio
8\Team Tools\Static Analysis Tools\FxCop\;D:\Program Files\Sun\OPhone SDK\tools;D:\Program Files\Sun\android-sdk-windows-1.5_r2
\tools;D:\Program Files\Sun\SDK\jdk\bin;D:\Program Files\Sun\SDK\jdk\jre\bin;E:\oracle\ora92\bin;C:\Program
Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32
\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;D:\Program Files\CodeSmith\v5.0
\;D:\Program Files\Symantec\pcAnywhere\;C:\Program Files\Ixia\IxChariot;D:\Program Files\Sun\SDK\bin;
? USERNAME = gmj
? NUMBER_OF_PROCESSORS = 2
? PROCESSOR_IDENTIFIER = x86 Family 6 Model 23 Stepping 6, GenuineIntel
? _ACP_LIB = D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Visual Studio 8
\VC\atlmfc\lib;D:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\i386;D:\Program Files\Microsoft Visual Studio 8
\VC\PlatformSDK\lib;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;D:\Program Files\Microsoft Visual Studio 8
\;D:\Program Files\Microsoft Visual Studio 8\lib
? WecVersionForRosebud.DA8 = 2
? SystemRoot = C:\WINDOWS
? ComSpec = C:\WINDOWS\system32\cmd.exe
? LOGONSERVER = http://www.cnblogs.com/xinyuxin912/***
? VS80COMNTOOLS = D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
? _ACP_ATLPROV = D:\Program Files\Microsoft Visual Studio 8\VC\Bin\ATLProv.dll
? WV_GATEWAY_CFG = E:\oracle\ora92\Apache\modplsql\cfg\wdbsvr.app
? CommonProgramFiles = C:\Program Files\Common Files
? PROCESSOR_LEVEL = 6
? PROCESSOR_REVISION = 1706
? CLIENTNAME = Console
? ALLUSERSPROFILE = C:\Documents and Settings\All Users
? VS90COMNTOOLS = D:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
? OS = Windows_NT
? HOMEDRIVE = C:
合計:37行
三、調用shell32中的SHGetSpecialFolderPath
需要引用"System.Runtime.InteropServices”命名空間。
(1)使用方法:
[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner,[Out] StringBuilder lpszPath, int nFolder, bool fCreate);
const int CSIDL_PROGRAMS = 2; ?// \Windows\Start Menu\Programs
StringBuilder pathBuilder = new StringBuilder(260);
SHGetSpecialFolderPath(IntPtr.Zero, pathBuilder, CSIDL_PROGRAMS, false);
string path = pathBuilder.ToString(); // should now hold the path
(2)參數列表:
Here's the full list of CSIDL's from ShlObj.h
const int CSIDL_INTERNET ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0001; ? ? ? ? ? ? ? // Internet Explorer (icon on desktop)
const int CSIDL_PROGRAMS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0002; ? ? ? ? ? ? // Start Menu\Programs
const int CSIDL_CONTROLS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0003; ? ? ? ? ? ? // My Computer\Control Panel
const int CSIDL_PRINTERS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0004; ? ? ? ? ? ? // My Computer\Printers
const int CSIDL_PERSONAL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0005; ? ? ? ? ? ? // My Documents
const int CSIDL_FAVORITES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 0x0006; ? ? ? ? ? ? ? // <user name>\Favorites
const int CSIDL_STARTUP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 0x0007; ? ? ? ? ? ? ? // Start Menu\Programs\Startup
const int CSIDL_RECENT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0008; ? ? ? ? ? ? // <user name>\Recent
const int CSIDL_SENDTO ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0009; ? ? ? ? ? ? // <user name>\SendTo
const int CSIDL_BITBUCKET ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x000a; ? ? ? ? ? ?// <desktop>\Recycle Bin
const int CSIDL_STARTMENU ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x000b; ? ? ? ? ? ?// <user name>\Start Menu
const int CSIDL_MYDOCUMENTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= CSIDL_PERSONAL; // ?Personal was just a silly name for My Documents
const int CSIDL_MYMUSIC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x000d; ? ? ? ? ? ? ?// "My Music" folder
const int CSIDL_MYVIDEO ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x000e; ? ? ? ? ? ? ?// "My Videos" folder
const int CSIDL_DESKTOPDIRECTORY ? ? ? ? ? ? ? ? ? ? ? ?= 0x0010; ? ? ? ? ? ? ? // <user name>\Desktop
const int CSIDL_DRIVES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0011; ? ? ? ? ? ? // My Computer
const int CSIDL_NETWORK ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0012; ? ? ? ? ? ? ?// Network Neighborhood (My Network Places)
const int CSIDL_NETHOOD ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0013; ? ? ? ? ? ? ?// <user name>\nethood
const int CSIDL_FONTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0014; ? ? ? ? ? ?// windows\fonts
const int CSIDL_TEMPLATES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0015;
const int CSIDL_COMMON_STARTMENU ? ? ? ? ? ? ? ? ? ? ? ?= 0x0016; ? ? ? ? ? ? ? // All Users\Start Menu
const int CSIDL_COMMON_PROGRAMS ? ? ? ? ? ? ? ? ?= 0x0017; ? ? ? ? ? ? ?// All Users\Start Menu\Programs
const int CSIDL_COMMON_STARTUP ? ? ? ? ? ? ? ? ? ?= 0x0018; ? ? ? ? ? ? // All Users\Startup
const int CSIDL_COMMON_DESKTOPDIRECTORY ?= 0x0019; ? ? ? ? ? ? ?// All Users\Desktop
const int CSIDL_APPDATA ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x001a; ? ? ? ? ? ? ?// <user name>\Application Data
const int CSIDL_PRINTHOOD ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x001b; ? ? ? ? ? ?// <user name>\PrintHood
const int CSIDL_LOCAL_APPDATA ? ? ? ? ? ? ? ? ? ? ?= 0x001c; ? ? ? ? ? ?// <user name>\Local Settings\Applicaiton Data (non roaming)
const int CSIDL_ALTSTARTUP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x001d; ? ? ? ? ? ? // non localized startup
const int CSIDL_COMMON_ALTSTARTUP ? ? ? ? ? ? ? ? ?= 0x001e; ? ? ? ? ? ?// non localized common startup
const int CSIDL_COMMON_FAVORITES ? ? ? ? ? ? ? ? ? ? ? ?= 0x001f;
const int CSIDL_INTERNET_CACHE ? ? ? ? ? ? ? ? ? ?= 0x0020;
const int CSIDL_COOKIES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0021;
const int CSIDL_HISTORY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0022;
const int CSIDL_COMMON_APPDATA ? ? ? ? ? ? ? ? ? ?= 0x0023; ? ? ? ? ? ? // All Users\Application Data
const int CSIDL_WINDOWS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0024; ? ? ? ? ? ? ?// GetWindowsDirectory()
const int CSIDL_SYSTEM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0025; ? ? ? ? ? ? // GetSystemDirectory()
const int CSIDL_PROGRAM_FILES ? ? ? ? ? ? ? ? ? ? ?= 0x0026; ? ? ? ? ? ?// C:\Program Files
const int CSIDL_MYPICTURES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0027; ? ? ? ? ? ? // C:\Program Files\My Pictures
const int CSIDL_PROFILE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0028; ? ? ? ? ? ? ?// USERPROFILE
const int CSIDL_SYSTEMX86 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0029; ? ? ? ? ? ?// x86 system directory on RISC
const int CSIDL_PROGRAM_FILESX86 ? ? ? ? ? ? ? ? ? ? ? ?= 0x002a; ? ? ? ? ? ? ? // x86 C:\Program Files on RISC
const int CSIDL_PROGRAM_FILES_COMMON ? ? ? ? ? ?= 0x002b; ? ? ? ? ? ? ? // C:\Program Files\Common
const int CSIDL_PROGRAM_FILES_COMMONX86 ?= 0x002c; ? ? ? ? ? ? ?// x86 Program Files\Common on RISC
const int CSIDL_COMMON_TEMPLATES ? ? ? ? ? ? ? ? ? ? ? ?= 0x002d; ? ? ? ? ? ? ? // All Users\Templates
const int CSIDL_COMMON_DOCUMENTS ? ? ? ? ? ? ? ? ? ? ? ?= 0x002e; ? ? ? ? ? ? ? // All Users\Documents
const int CSIDL_COMMON_ADMINTOOLS ? ? ? ? ? ? ? ? ?= 0x002f; ? ? ? ? ? ?// All Users\Start Menu\Programs\Administrative Tools
const int CSIDL_ADMINTOOLS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0030; ? ? ? ? ? ? // <user name>\Start Menu\Programs\Administrative Tools
const int CSIDL_CONNECTIONS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0031; ? ? ? ? ? ? ?// Network and Dial-up Connections
const int CSIDL_COMMON_MUSIC ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0035; ? ? ? ? ? ? ? // All Users\My Music
const int CSIDL_COMMON_PICTURES ? ? ? ? ? ? ? ? ?= 0x0036; ? ? ? ? ? ? ?// All Users\My Pictures
const int CSIDL_COMMON_VIDEO ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0037; ? ? ? ? ? ? ? // All Users\My Video
const int CSIDL_RESOURCES ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x0038; ? ? ? ? ? ?// Resource Direcotry
const int CSIDL_RESOURCES_LOCALIZED ? ? ? ? ? ? ?= 0x0039; ? ? ? ? ? ? ?// Localized Resource Direcotry
const int CSIDL_COMMON_OEM_LINKS ? ? ? ? ? ? ? ? ? ? ? ?= 0x003a; ? ? ? ? ? ? ? // Links to All Users OEM specific apps
const int CSIDL_CDBURN_AREA ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x003b; ? ? ? ? ? ? ?// USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
const int CSIDL_COMPUTERSNEARME ? ? ? ? ? ? ? ? ?= 0x003d; ? ? ? ? ? ? ?// Computers Near Me (computered from Workgroup membership)
const int CSIDL_FLAG_CREATE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 0x8000; ? ? ? ? ? ? ?// combine with CSIDL_ value to force folder creation in SHGetFolderPath()
const int CSIDL_FLAG_DONT_VERIFY ? ? ? ? ? ? ? ? ? ? ? ?= 0x4000; ? ? ? ? ? ? ? // combine with CSIDL_ value to return an unverified folder path
const int CSIDL_FLAG_DONT_UNEXPAND ? ? ? ? ? ? ? ?= 0x2000; ? ? ? ? ? ? // combine with CSIDL_ value to avoid unexpanding environment variables
const int CSIDL_FLAG_NO_ALIAS ? ? ? ? ? ? ? ? ? ? ?= 0x1000; ? ? ? ? ? ?// combine with CSIDL_ value to insure non-alias versions of the pidl
const int CSIDL_FLAG_PER_USER_INIT ? ? ? ? ? ? ? ?= 0x0800; ? ? ? ? ? ? // combine with CSIDL_ value to indicate per-user init (eg. upgrade)
?四、期待.net4.0
還沒裝.net4.0呢,好像已經擴展了SpecialFolder,比如我要獲取 "C:\Documents and Settings\All Users\「開始」菜單\程序",則可以直接使用
string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms);
?沒實際驗證過,如果您驗證了幫我補充一下吧^_^
?
?
?
轉載于:https://www.cnblogs.com/xinyuxin912/archive/2010/05/06/1728806.html
總結
以上是生活随笔為你收集整理的也说c#获取windows特殊路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于OHCI的USB主机 —— UFI数
- 下一篇: 企业USB权限控制心得