Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
返回當前用戶文件夾,但在系統帳戶返回例如:如何獲取系統帳戶下的所有用戶應用程序數據文件夾?
C:\Windows\system32\config\systemprofile\AppData\Roaming\
所以,問題是如何使用系統帳戶來獲取所有用戶的AppData的文件夾?
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
返回當前用戶文件夾,但在系統帳戶返回例如:如何獲取系統帳戶下的所有用戶應用程序數據文件夾?
C:\Windows\system32\config\systemprofile\AppData\Roaming\
所以,問題是如何使用系統帳戶來獲取所有用戶的AppData的文件夾?
我想,這可以幫助你:
//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
我面臨同樣的問題,當我希望得到下「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」打開你的註冊表,你會發現你需要的一切。
嗨,你從哪裏訪問這個方法ManagementObjectSearcher()?你正在訪問任何類似win32的庫嗎? –
解釋你想要做什麼,而不是你認爲你應該這樣做。 – CodeCaster
我想爲所有用戶獲取所有appData文件夾路徑 – Suhan
是的,從您的問題中可以清楚地看到您需要。這是一個奇怪的問題,這就是爲什麼我問**爲什麼你想這樣做**。 – CodeCaster