2013-08-02 53 views
2

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)返回當前用戶文件夾,但在系統帳戶返回例如:如何獲取系統帳戶下的所有用戶應用程序數據文件夾?

C:\Windows\system32\config\systemprofile\AppData\Roaming\ 

所以,問題是如何使用系統帳戶來獲取所有用戶的AppData的文件夾?

+0

解釋你想要做什麼,而不是你認爲你應該這樣做。 – CodeCaster

+0

我想爲所有用戶獲取所有appData文件夾路徑 – Suhan

+0

是的,從您的問題中可以清楚地看到您需要。這是一個奇怪的問題,這就是爲什麼我問**爲什麼你想這樣做**。 – CodeCaster

回答

1

我想,這可以幫助你:

//List all the users 
List<String> usersList = new List<String>(); 
ManagementObjectSearcher sidQuery = new ManagementObjectSearcher("SELECT * FROM Win32_Account"); 
ManagementObjectCollection results = sidQuery.Get(); 
foreach (ManagementObject result in results) 
{ 
    usersList.Add(result["Name"]) 
} 

//Showing all the partitions letters 
String[] strDrives = Environment.GetLogicalDrives(); 
Foreach (string strDrive in strDrives) 
{ 
    //Check if profil has AppData folder 
    List<String> usersAppData = new List<String>(); 
    String pathAppData = String.Empty; 
    foreach(String user in usersList) 
    { 
    pathAppData = String.Format("{0}\Users\{1}\AppData", strDrive, user); 
    if(Directory.Exists(pathAppData)) 
    { 
     usersAppData.Add(pathAppData); 
    } 
    } 
} 

    //Here, you've got all the users AppData folder in usersAppData 
+0

Environment.SystemDrive不起作用,該文件夾可以移動到任何驅動器 – Suhan

+0

「SystemRoot」也無法正常工作,它只是Windows不是用戶的文件夾 – Suhan

+0

是的這將工作,但它是特別緩慢的情況下,網絡驅動器 – Suhan

0

我面臨同樣的問題,當我希望得到下「SYSTEM」帳戶的路徑到用戶的特殊文件夾(桌面或我的文檔)。經過漫長的調查,我發現解決方案:

string sid = string.Empty; 
using (var mos = new ManagementObjectSearcher(
         "Select SID From Win32_UserAccount where Disabled = 0")) 
{ 
    foreach (var bios in mos.Get()) 
    { 
     sid = bios["SID"].ToString(); 
    } 
} 
using (RegistryKey key = Registry.Users.OpenSubKey(sid + 
@"\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")) 
{ 
    var docFolder = key.GetValue("Personal"); 
    var desktopFolder = key.GetValue("Desktop"); 
    Console.WriteLine("document folder: {0}", docFolder); 
    Console.WriteLine("Desktop folder: {0}", desktopFolder); 
} 

「Disabled = 0」是獲取活動用戶的選項。如果你使用「regedit」打開你的註冊表,你會發現你需要的一切。

+0

嗨,你從哪裏訪問這個方法ManagementObjectSearcher()?你正在訪問任何類似win32的庫嗎? –

相關問題