উত্তর:
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Environment.UserName
"রানআস" ব্যবহারকারীকে ফিরিয়ে দেবে।
MessageBox.Show(Environment.UserName);
এটি আপনার window_loaded
ইভেন্টে রাখুন এবং রানএএস ব্যবহার করে এটি চালান ....
Domain\Username
। আমি কীভাবে ব্যবহারকারীর নামটির সাথে যুক্ত নাম পেতে পারি?
আপনি যদি ব্যবহারকারীদের নেটওয়ার্কে থাকেন তবে ব্যবহারকারীর নামটি ভিন্ন হবে:
Environment.UserName
- Will Display format : 'Username'
বরং
System.Security.Principal.WindowsIdentity.GetCurrent().Name
- Will Display format : 'NetworkName\Username'
আপনি যে ফর্ম্যাটটি চান তা চয়ন করুন।
Environment.UserDomainName + "\\" + Environment.UserName
আপাতদৃষ্টিতে একই ফলাফল হিসাবে আপনি ব্যবহার করতে পারেন System.Security.Principal.WindowsIdentity.GetCurrent().Name
। এখন, কি পার্থক্য, আপনি জিজ্ঞাসা করুন ... আমি নিশ্চিত নই।
System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split( '\\' ).Last();
ToArray()
করার Split
আগে আপনাকে যুক্ত করতে হবেLast()
ToArray()
প্রয়োজন হয়। আপনার using System.Linq;
যদিও প্রয়োজন হবে ।
সম্পত্তি চেষ্টা করুন: Environment.UserName
।
string userName = Environment.UserName;
Environment.UsernName
লগ-ইন করা অ্যাকাউন্ট-নাম দেয়, তবে WindowsIdentity.GetCurrent().Name
সেই অ্যাপ্লিকেশনটি যে অ্যাকাউন্ট-নামটি চলছে তা ফিরিয়ে দিচ্ছে।
পরিবেশের জন্য ডকুমেন্টেশন.ইউজারনেমটি কিছুটা বিরোধী বলে মনে হচ্ছে:
পরিবেশ। ব্যবহারকারী নাম সম্পত্তি
একই পৃষ্ঠায় এটি বলে:
বর্তমানে উইন্ডোজ অপারেটিং সিস্টেমে লগ ইন করা ব্যক্তির ব্যবহারকারীর নাম পান।
এবং
বর্তমান থ্রেড শুরু করা ব্যক্তির ব্যবহারকারীর নাম প্রদর্শন করে
আপনি যদি রান.এ ব্যবহার করে পরিবেশের.উজারনেম পরীক্ষা করেন তবে এটি আপনাকে রানএর ব্যবহারকারী অ্যাকাউন্টের নাম দেবে, ব্যবহারকারী উইন্ডোজে মূলত লগইন হয়নি।
আমি অন্য উত্তরগুলিতে পুরোপুরি দ্বিতীয়, তবে আমি আরও একটি পদ্ধতি হাইলাইট করতে চাই যা বলে
String UserName = Request.LogonUserIdentity.Name;
উপরের পদ্ধতিটি আমাকে ফর্ম্যাটটিতে ব্যবহারকারীর নামটি ফিরিয়ে দিয়েছে: ডোমেননাম \ ব্যবহারকারী নাম । উদাহরণস্বরূপ, ইউরোপ \ ব্যবহারকারীর নাম
যা থেকে পৃথক:
String UserName = Environment.UserName;
যা ফর্ম্যাটে প্রদর্শিত হয়েছে: ব্যবহারকারীর নাম
এবং পরিশেষে:
String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
যা দিয়েছে: NT AUTHORITY\IUSR
(আইআইএস সার্ভারে DomainName\UserName
অ্যাপ্লিকেশন চালানোর সময় ) এবং (স্থানীয় সার্ভারে অ্যাপ্লিকেশন চালানোর সময়)।
Request
কেবলমাত্র যদি আপনি ওয়েব অ্যাপ্লিকেশন হন তবেই কাজ করে। এটির উদাহরণSystem.Web.HttpRequest
আমি বিদ্যমান উত্তরগুলি থেকে বেশ কয়েকটি সংমিশ্রণ চেষ্টা করেছি, তবে তারা আমাকে দিচ্ছিল
DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool
আমি ব্যবহার শেষ
string vUserName = User.Identity.Name;
যা আমাকে প্রকৃত ব্যবহারকারীদের ডোমেন ব্যবহারকারীর নাম দিয়েছে।
String myUserName = Environment.UserName
এটি আপনাকে আউটপুট দেবে - আপনার_ ব্যবহারকারী_নাম
System.Windows.Forms.SystemInformation.UserName
প্রকৃত লগ ইন করা ব্যবহারকারীর জন্য ব্যবহার করুন যেমন Environment.UserName
বর্তমান প্রক্রিয়াটি ব্যবহার করা অ্যাকাউন্টটি ফেরত দেয়।
আমি পূর্ববর্তী সমস্ত উত্তর চেষ্টা করেছিলাম এবং এর মধ্যে আমার পক্ষে কোনও কাজ না করার পরে উত্তরটি এমএসডিএন-তে পেয়েছি। আমার জন্য সঠিকটির জন্য 'ব্যবহারকারীর নাম 4' দেখুন।
আমি লগ-ইন ব্যবহারকারীর পরে আছি , যেমন প্রদর্শিত:
<asp:LoginName ID="LoginName1" runat="server" />
এই সমস্ত চেষ্টা করার জন্য আমি এখানে একটি ছোট ফাংশন লিখেছি। আমার ফলাফল প্রতিটি সারির পরে মন্তব্যে।
protected string GetLoggedInUsername()
{
string UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; // Gives NT AUTHORITY\SYSTEM
String UserName2 = Request.LogonUserIdentity.Name; // Gives NT AUTHORITY\SYSTEM
String UserName3 = Environment.UserName; // Gives SYSTEM
string UserName4 = HttpContext.Current.User.Identity.Name; // Gives actual user logged on (as seen in <ASP:Login />)
string UserName5 = System.Windows.Forms.SystemInformation.UserName; // Gives SYSTEM
return UserName4;
}
এই ফাংশনটি কল করার ফলে লগইন হওয়া ব্যবহারকারীর নামটি ফিরে আসে।
আপডেট: আমি উল্লেখ করতে চাই যে আমার স্থানীয় সার্ভারে এই কোডটি চালানো আমাকে দেখায় যে ব্যবহারকারীর নাম 4 "" (একটি ফাঁকা স্ট্রিং) ফিরে আসে, তবে ইউজারনেম 3 এবং ইউজারনেম 5 লগ ইন হওয়া ব্যবহারকারীকে ফিরিয়ে দেয়। সাবধান থাকার মতো কিছু।
এখানে কোডটি (তবে সি # তে নেই):
Private m_CurUser As String
Public ReadOnly Property CurrentUser As String
Get
If String.IsNullOrEmpty(m_CurUser) Then
Dim who As System.Security.Principal.IIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
If who Is Nothing Then
m_CurUser = Environment.UserDomainName & "\" & Environment.UserName
Else
m_CurUser = who.Name
End If
End If
Return m_CurUser
End Get
End Property
এখানে কোড (এখন সি # তেও রয়েছে):
private string m_CurUser;
public string CurrentUser
{
get
{
if(string.IsNullOrEmpty(m_CurUser))
{
var who = System.Security.Principal.WindowsIdentity.GetCurrent();
if (who == null)
m_CurUser = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
else
m_CurUser = who.Name;
}
return m_CurUser;
}
}
এটা চেষ্টা কর
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
এখন এটি আরও ভাল দেখাচ্ছে
বর্তমান উইন্ডো ব্যবহারকারীর নাম পান:
using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
// <-- Keep this information secure! -->
Console.WriteLine("UserName: {0}", Environment.UserName);
}
}
একটি উইন্ডোজ ফর্ম অ্যাপ্লিকেশন যা বেশ কয়েকটি ব্যবহারকারীর কাছে বিতরণ করা হয়েছিল, যার মধ্যে অনেকগুলি ভিপিএন-এর উপর লগইন করেছিল, আমি বেশ কয়েকটি উপায় চেষ্টা করেছিলাম যা সবগুলি আমার স্থানীয় মেশিন পরীক্ষার জন্য কাজ করেছিল তবে অন্যদের জন্য নয়। আমি এমন একটি মাইক্রোসফ্ট নিবন্ধ পেয়েছি যা আমি গ্রহণ করেছি এবং এটি কাজ করি।
using System;
using System.Security.Principal;
namespace ManageExclusion
{
public static class UserIdentity
{
// concept borrowed from
// https://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity(v=vs.110).aspx
public static string GetUser()
{
IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
WindowsIdentity windowsIdentity = new WindowsIdentity(accountToken);
return windowsIdentity.Name;
}
}
}
যদি এটি অন্যদের জন্য সহায়ক হয় তবে আমি যখন সি # .NET 3.5 অ্যাপ থেকে ভিজ্যুয়াল স্টুডিও 2017 এ একটি অ্যাপ্লিকেশন আপগ্রেড করেছি তখন এই লাইন কোডটিতেUser.Identity.Name.Substring(4);
এই ত্রুটিটি ছুঁড়ে ফেলা হয়েছে " স্টার্টইন্ডেক্স স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে বড় হতে পারে না " (এটি আগে বাউল হয়নি)।
এটি খুশি হয়েছিল যখন আমি এটিকে পরিবর্তন করেছিলাম System.Security.Principal.WindowsIdentity.GetCurrent().Name
তবে Environment.UserName;
উইন্ডোজ ব্যবহারকারী এবং লগইন ডোমেন ছাড়াই লগইন করতে ব্যবহার করে শেষ করেছি ended
আমি এখানে বেশিরভাগ উত্তর দিয়েছি এবং তাদের মধ্যে কেউই আমাকে সঠিক ব্যবহারকারীর নাম দেয় নি।
আমার ক্ষেত্রে আমি অন্য ব্যবহারকারীর কাছ থেকে আমার অ্যাপ্লিকেশনটি চালনার সময় লগইন করা ব্যবহারকারী নামটি পেতে চাইতাম, যেমন শিফট + যখন কোনও ফাইলের উপর ডান ক্লিক করুন এবং "ভিন্ন ব্যবহারকারী হিসাবে চালান" like
যে উত্তরগুলি আমি চেষ্টা করেছি তা আমাকে 'অন্যান্য' ব্যবহারকারীর নাম দিয়েছে।
এই ব্লগ পোস্টটি ব্যবহারকারীর নাম লগইন করার জন্য একটি উপায় সরবরাহ করে, যা আমার দৃশ্যেও কাজ করে:
https://smbadiwe.github.io/post/track- activities-windows-service/
এটি Wtsapi ব্যবহার করে
Environment.UserName
?