سؤال

باستخدام هذا:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

أحصل على هذا الإخراج:

"C:\\Documents and Settings\\[USER]\\Application Data"

كيف يمكنني الحصول على الدليل الجذر لجميع المستخدمين؟ بمعنى آخر:

"C:\\Documents and Settings\\[USER]\\"
هل كانت مفيدة؟

المحلول

قد يكون هذا هو الحل الجيد: مع الأخذ في الاعتبار ما إذا كان هذا هو Vista / Win7 أو XP ودون استخدام متغيرات البيئة:

string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName;
if ( Environment.OSVersion.Version.Major >= 6 ) {
    path = Directory.GetParent(path).ToString();
}

على الرغم من استخدام متغير البيئة أكثر وضوحا.

نصائح أخرى

يحاول:

System.Environment.GetEnvironmentVariable("USERPROFILE");

يحرر:

إذا كان إصدار .NET الذي تستخدمه هو 4 أو أعلى، فيمكنك استخدام Environment.SpecialFolder تعداد:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

يمكنك الحصول على مسار UserProfile مع هذا فقط:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

أيضا مفيدة للغاية، في حين التحقيق في Environment.SpecialFolder العادة. استخدم LinQPad أو إنشاء حل وتنفيذ هذا الرمز:

Enum.GetValues(typeof(Environment.SpecialFolder))
    .Cast<Environment.SpecialFolder>()
    .Select(specialFolder => new
    {
        Name = specialFolder.ToString(),
        Path = Environment.GetFolderPath(specialFolder)
    })
    .OrderBy(item => item.Path.ToLower())

Folder Paths

هذه هي النتيجة على جهازي:

MyComputer
LocalizedResources
CommonOemLinks
ProgramFiles            C:\Program Files (x86) 
ProgramFilesX86         C:\Program Files (x86) 
CommonProgramFiles      C:\Program Files (x86)\Common Files 
CommonProgramFilesX86   C:\Program Files (x86)\Common Files 
CommonApplicationData   C:\ProgramData 
CommonStartMenu         C:\ProgramData\Microsoft\Windows\Start Menu 
CommonPrograms          C:\ProgramData\Microsoft\Windows\Start Menu\Programs 
CommonAdminTools        C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
CommonStartup           C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 
CommonTemplates         C:\ProgramData\Microsoft\Windows\Templates 
UserProfile             C:\Users\fisch 
LocalApplicationData    C:\Users\fisch\AppData\Local 
CDBurning               C:\Users\fisch\AppData\Local\Microsoft\Windows\Burn\Burn 
History                 C:\Users\fisch\AppData\Local\Microsoft\Windows\History 
InternetCache           C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCache 
Cookies                 C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCookies 
ApplicationData         C:\Users\fisch\AppData\Roaming 
NetworkShortcuts        C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Network Shortcuts 
PrinterShortcuts        C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Printer Shortcuts 
Recent                  C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Recent 
SendTo                  C:\Users\fisch\AppData\Roaming\Microsoft\Windows\SendTo 
StartMenu               C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu 
Programs                C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 
AdminTools              C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
Startup                 C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 
Templates               C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Templates 
Desktop                 C:\Users\fisch\Desktop 
DesktopDirectory        C:\Users\fisch\Desktop 
Favorites               C:\Users\fisch\Favorites 
MyMusic                 C:\Users\fisch\Music 
MyDocuments             C:\Users\fisch\OneDrive\Documents 
MyDocuments             C:\Users\fisch\OneDrive\Documents 
MyPictures              C:\Users\fisch\OneDrive\Pictures 
MyVideos                C:\Users\fisch\Videos 
CommonDesktopDirectory  C:\Users\Public\Desktop 
CommonDocuments         C:\Users\Public\Documents 
CommonMusic             C:\Users\Public\Music 
CommonPictures          C:\Users\Public\Pictures 
CommonVideos            C:\Users\Public\Videos 
Windows                 C:\Windows 
Fonts                   C:\Windows\Fonts 
Resources               C:\Windows\resources 
System                  C:\Windows\system32 
SystemX86               C:\Windows\SysWoW64 

بالمناسبة. "FISCH" هو أول 5 أحرف اسمي الأخير (وهي الألمانية ل "الأسماك"). وبعد هذا هو اسم المستخدم المعين عند تسجيل الدخول باستخدام حساب Microsoft.

Environment.GetEnvironmentVariable("userprofile")

محاولة التنقل من أعلى من الطاقات المسماة عرضة للمشاكل. هناك الكثير من الأسباب التي لا تتوقعها المجلدات حيث تتوقعها - يمكن للمستخدمين نقلها بمفردهم، يمكن ل GPO نقلها، إعادة توجيه المجلد إلى مسارات UNC، إلخ.

باستخدام متغيرات البيئة بالنسبة للمستخدم، يجب أن تعكس أي من تلك المشكلات المحتملة.

يحاول:

System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/

العبث حول متغيرات البيئة أو إزاحة مجلد الوالد المشفوف به من الصعب ليست فكرة جيدة أبدا عندما يكون هناك API للحصول على المعلومات التي تريدها، اتصل SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)

$env:USERPROFILE = "C:\\Documents and Settings\\[USER]\\"

يمكنك استخدام التعليمات البرمجية التالية:

if(Platform.Equals("WinCE"))
{
    m_CurrentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
}
else if(Platform.Equals("Win32NT"))
{
    m_CurrentPath = Directory.GetCurrentDirectory();
}

مزيد من المعلومات احصل على مسار الدليل الحالي في كل من WinXP و WINCE مع C #

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top