C#獲取“所有用戶桌面”的路徑


想用C#得到The All Users Desktop(Public\Desktop)的路徑。

原來以為很簡單,然而

Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

只能得到當前用戶的桌面路徑。到最后,沒有辦法,只能調用C++的函數:

[DllImport("shfolder.dll", CharSet = CharSet.Auto)]
private static extern int SHGetFolderPath ( IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath );
private const int MAX_PATH = 260;
private const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019;
public static string GetAllUsersDesktopFolderPath ( )
{
     StringBuilder sbPath = new StringBuilder(MAX_PATH);
     SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_DESKTOPDIRECTORY, IntPtr.Zero, 0, sbPath);
     return sbPath.ToString();
}

獲取DLL的目錄

Assembly myAssembly = Assembly.GetEntryAssembly();
string path = myAssembly.Location;
DirectoryInfo dr = new DirectoryInfo(path);
path=dr.Parent;  //當前目錄的上一級目錄

C#獲取程序當前路徑的方法

System.Environment.CurrentDirectory;
//例: c:\test
Application.ExecutablePath;(包括名稱)
//例: c:\test\myapp.exe
Application.StartupPath;(不包括名稱)
//例: c:\test

獲取新的 Process 組件並將其與當前活動的進程關聯的主模塊的完整路徑,包含文件名(進程名)。

string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)

獲取和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑。

string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文件所在的目錄)

獲取當前 Thread 的當前應用程序域的基目錄,它由程序集沖突解決程序用來探測程序集。

string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")

獲取和設置包含該應用程序的目錄的名稱。

string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")

獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。

string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目錄)

獲取啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。

string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)

獲取應用程序的當前工作目錄(不可靠)。

string str = System.IO.Directory.GetCurrentDirectory();
result: X:\xxx\xxx (.exe文件所在的目錄)

獲取系統特殊文件夾路徑(收藏夾,桌面)

1、 收藏夾路徑

System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites)

2、 桌面路徑

System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop)

更多請見枚舉類System.Environment.SpecialFolder

 

static void Main(string[] args)
        {
  //Environment.GetFolderPath(Environment.SpecialFolder);    
          
// 此方法檢索指向系統特殊文件夾(如 Program Files、Programs、System 或 Startup)的路徑,

//可用於訪問公共信息。特殊文件夾在默認情況下由系統設置,或者由用戶在安裝 Windows 的某個版本時顯式進行設置。

//folder 參數指定要檢索的特殊文件夾,且該參數必須是 Environment.SpecialFolder 枚舉中的一個值;任何其他值都將引發異常。

//folder的枚舉

//ApplicationData 目錄,它用作當前漫游用戶的應用程序特定數據的公共儲存庫。 
// CommonApplicationData 目錄,它用作所有用戶使用的應用程序特定數據的公共儲存庫。 
// LocalApplicationData 目錄,它用作當前非漫游用戶使用的應用程序特定數據的公共儲存庫。 
// Cookies 用作 Internet Cookie 的公共儲存庫的目錄。 
// Desktop 邏輯桌面,而不是物理文件系統位置。 
// Favorites 用作用戶收藏夾項的公共儲存庫的目錄。 
// History 用作 Internet 歷史記錄項的公共儲存庫的目錄。 
// InternetCache 用作 Internet 臨時文件的公共儲存庫的目錄。 
// Programs 包含用戶程序組的目錄。 
// MyComputer “我的電腦”文件夾。  
// MyMusic “My Music”文件夾。 
// MyPictures “My Pictures”文件夾。 
// Recent 包含用戶最近使用過的文檔的目錄。 
// SendTo 包含“發送”菜單項的目錄。 
// StartMenu 包含“開始”菜單項的目錄。 
// Startup 對應於用戶的“啟動”程序組的目錄。 
// System “System”目錄。 
// Templates 用作文檔模板的公共儲存庫的目錄。 
// DesktopDirectory 用於物理上存儲桌面上的文件對象的目錄。 
// Personal 用作文檔的公共儲存庫的目錄。 
// MyDocuments “我的電腦”文件夾。 
// ProgramFiles “Program files”目錄。 
// CommonProgramFiles 用於應用程序間共享的組件的目錄。

 

            Console.WriteLine("公共存儲庫:{0}",Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
                  Console.WriteLine("目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
                  Console.WriteLine("目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
                  Console.WriteLine("COOKIE路徑:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
                  Console.WriteLine("邏輯桌面:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Desktop));

                  Console.WriteLine("收藏夾路徑:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Favorites));    
            Console.WriteLine("網頁瀏覽歷史記錄路徑:{0}",Environment.GetFolderPath(Environment.SpecialFolder.History));     
            Console.WriteLine("Internet臨時文件的路徑:{0}",Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
                  Console.WriteLine("應用程序目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Programs));
                  Console.WriteLine("我的電腦目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyComputer));
                  Console.WriteLine("我的音樂目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
                  Console.WriteLine("圖片目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
                  Console.WriteLine("最近使用文檔目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Recent));
                  Console.WriteLine("最近發送文件目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.SendTo));
                  Console.WriteLine("啟動菜單中開始的目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
                  Console.WriteLine("System目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.System));
              Console.WriteLine("用作文檔模板的公共儲存庫的目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Templates));
              Console.WriteLine("用於物理上存儲桌面上的文件對象的目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
              Console.WriteLine("用作文檔的公共儲存庫的目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.Personal));
              Console.WriteLine("我的電腦文件夾:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
              Console.WriteLine("Program files目錄。 :{0}",Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
              Console.WriteLine("用於應用程序間共享的組件的目錄:{0}",Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
              Console.ReadLine();
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM