আমি কীভাবে বর্তমান ব্যবহারকারী ডিরেক্টরিটি পেতে পারি?


101

এটি ব্যবহার করে:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

আমি এই আউটপুট পেতে:

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

আমি কীভাবে সমস্ত ব্যবহারকারীর রুট ডিরেক্টরি পেতে পারি? অর্থাত:

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

4
উত্তর আমি শেষ পর্যন্ত মুছে ফেলা হয়েছে ব্যবহার ... এই কাজগুলো করেনঃ Path.GetDirectoryName (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData))
জুয়ান

4
জুয়ান - এটি সর্বদা আপনার পক্ষে কাজ করবে না - আপনি এইবার সবে ভাগ্যবান হয়ে উঠলেন।
স্কট আইভে

এটা কেন? তুমি কি ভিসার মত? বা এক্সপিতে এটি হঠাৎ কাজ করা বন্ধ করবে?
জুয়ান

4
জে রিগসের উত্তরের বিষয়ে স্কটের মন্তব্য দেখুন। ডাব্লু and এবং ভিস্টায় অ্যাপ্লিকেশন ডেটা ফোল্ডারটি অন্য জায়গায় রয়েছে, সুতরাং আপনার 1
টমাস

উত্তর:


50

এটি হতে পারে এটির একটি ভাল সমাধান হতে পারে: এটি ভিস্তা / উইন 7 বা এক্সপি কিনা এবং পরিবেশের ভেরিয়েবলগুলি ব্যবহার না করেই বিবেচনা করা:

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

যদিও পরিবেশের ভেরিয়েবল ব্যবহার করা অনেক বেশি স্পষ্ট।


167

চেষ্টা করুন:

System.Environment.GetEnvironmentVariable("USERPROFILE");

সম্পাদনা করুন:

আপনি যে নেট .NET ব্যবহার করছেন তার সংস্করণ যদি 4 বা তার বেশি হয় তবে আপনি Environment.SpecialFolderগণনাটি ব্যবহার করতে পারেন :

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

16
আপনাকে ফোল্ডার পাথ দেওয়ার জন্য পরিবেশের ভেরিয়েবলের উপর নির্ভর করা সত্যিই খারাপ ধারণা। সেই পরিবেশের ভেরিয়েবলগুলি পরিবর্তন করার অনেক উপায় রয়েছে। প্রস্তাবিত উপায় হ'ল পরিবেশের সাথে .স্পেশিয়াল ফোল্ডার গণনার।
জিম মিশেল

4
দুর্ভাগ্যবশত, যেমন আপনি দেখতে পারেন msdn.microsoft.com/en-us/library/... USERPROFILE ফোল্ডারে শুমার অন্তর্ভুক্ত করা হয় না।
থমাস

এনভায়রনমেন্ট.স্পেশিয়াল ফোল্ডার .NET 1.1 থেকে অন্তর্ভুক্ত করা হয়েছে, কেবল "ইউজারপ্রাইফিলি" ফোল্ডার নেই ...
ভিনি

@ জিমমিশেল তবে এগুলি কি ভাবা যায় না? এবং আপনি যদি সর্বদা পরিবেশের পরিবর্তনশীলগুলির সাথে উল্লেখ করেন তবে আপনি ভাল।
নাট-উইলকিনস

22

আপনি কেবল এটির সাথে ব্যবহারকারীর প্রোফাইলে পাথ পেতে পারেন:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);


12

Environment.SpecialFolderএনামগুলি তদন্ত করার সময়ও খুব সহায়ক । লিনকিউপ্যাড ব্যবহার করুন বা একটি সমাধান তৈরি করুন এবং এই কোডটি কার্যকর করুন:

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

ফোল্ডার পাথ

এটি আমার মেশিনে ফলাফল:

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 

("ফিশ" হ'ল আমার সর্বশেষ নামের প্রথম 5 টি অক্ষর a এটি মাইক্রোসফ্ট অ্যাকাউন্টে সাইন ইন করার সময় নির্ধারিত ব্যবহারকারীর নাম))


আমি জানি না আমি কীভাবে লিনকিউপ্যাডের কথা কখনই শুনিনি, চেষ্টা করে দেখলাম, এই জিনিসটি দুর্দান্ত, সুপারিশ করার জন্য ধন্যবাদ।
ট্র্যাভিসো

4
Environment.GetEnvironmentVariable("userprofile")

নামী স্পেশালফোল্ডার থেকে নেভিগেট করার চেষ্টা করা সমস্যার জন্য প্রবণ। প্রচুর কারণ রয়েছে যে ফোল্ডারগুলি যেখানে আপনি প্রত্যাশা করছেন সেগুলি হবেনা - ব্যবহারকারীরা সেগুলি তাদের নিজেরাই সরিয়ে নিতে পারে, জিপিও সেগুলি সরিয়ে নিতে পারে, ফোল্ডারটিকে ইউএনসি পাথগুলিতে পুনর্নির্দেশকরণ ইত্যাদি etc.

ব্যবহারকারীর প্রোফাইলে পরিবেশের পরিবর্তনশীল ব্যবহার করা সেই সম্ভাব্য যে কোনও সমস্যার প্রতিফলন ঘটানো উচিত।


3

চেষ্টা করুন:

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

4
এটি উইন্ডোজ on-এ কাজ করবে না এবং আমি ধরে নিচ্ছি যে আমি যদি ফোল্ডারের কাঠামোটি সঠিকভাবে মনে করি তবে ভিস্তার উপর কাজ করবে না। অ্যাপলিকেশন ডেটা ফোল্ডারটি \% ব্যবহারকারী প্রোফাইলে% \ অ্যাপডাটা \ রোমিং is
স্কট আইভী

এটি আমার ভিস্তা মেশিনে "সি: \ ব্যবহারকারীদের \ ফ্রেড্রিক \
অ্যাপডাটা

2

পরিবেশের ভেরিয়েবল বা হার্ড-কোডড প্যারেন্ট ফোল্ডার অফসেটগুলির সাথে জগাখিচুড়ি করা আপনার পক্ষে যে তথ্য চান, সেখানে কল করার জন্য কোনও এপিআই থাকলে কখনই কল্পনা করা যায় না call SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)


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

প্রশ্নে মন্তব্য দেখুন। উইন্ডোজের সমস্ত সংস্করণের ক্ষেত্রে এটি হয় না।
ওয়াই হা লি

-3

আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:

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

আরও তথ্য দেখুন: WinXP এবং WinCE উভয় সি এর সাথে বর্তমান ডিরেক্টরি পথ পান


4
এটি এখানে পুরোপুরি বাইরে। ওপি বর্তমান ব্যবহারকারী ফোল্ডারটির জন্য জিজ্ঞাসা করছে, কার্যকারী ফোল্ডারটি নয়।
জুলাইলগন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.