Jak uzyskać aktualną nazwę użytkownika w .NET przy użyciu C#?Jak uzyskać bieżącą nazwę użytkownika w .NET przy użyciu C#?
Odpowiedz
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Wypróbuj usługę: Environment.UserName
.
Lub 'ciąg userName = Environment.UserName;' – Donut
Uwaga: jak Simon Gillbee wspomniany w komentarzach zaakceptowanej odpowiedzi, 'Environment.UsernName' podaje Zalogowano nazwę-konta, ale 'WindowsIdentity.GetCurrent(). Nazwa' zwraca nazwę konta, z powodu której aplikacja działa jako. – Gerwald
@leo: Caution: Ta informacja jest również pozornie niepoprawna, patrz [Odpowiedź Bolu] (http://stackoverflow.com/questions/1240373/how-do-i-get-the-current-username-in-net-using -C# comment34794502_1240379). :-) –
Zastosowanie:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
To będzie nazwa logowania.
Nie, jeśli wątek jest uruchomiony w trybie podwyższonym. – maxp
Można również spróbować użyć:
Environment.UserName;
tak ...:
string j = "Your WindowsXP Account Name is: " + Environment.UserName;
Nadzieja to był pomocny.
Jeśli jesteś w sieci użytkowników, to nazwa będzie inna:
Environment.UserName
- Will Display format : 'Username'
zamiast
System.Security.Principal.WindowsIdentity.GetCurrent().Name
- Will Display format : 'NetworkName\Username'
Wybierz żądany format.
Możesz użyć 'Environment.UserDomainName +" \\ "+ Environment.UserName", aby uzyskać pozornie taki sam wynik jak 'System.Security.Principal.WindowsIdentity.GetCurrent(). Name'.Teraz, jaka jest różnica, pytasz ... Nie jestem pewien. – Gutblender
Potrzebowałem, aby użytkownik uruchamiał aplikację, a nie kto jest zalogowany (Environment.UserName nie jest tym, czego chcę), więc wykonałem następujące czynności, aby usunąć domenę: 'System.Security.Principal.WindowsIdentity.GetCurrent () .Name.Split ('\\') .Last(); ' – thehelix
Musisz dodać' ToArray() 'po' Split' przed wywołaniem 'Last()' – codenamezero
Dokumentacja Environment.UserName wydaje się być trochę konflikt:
na tej samej stronie jest napisane:
Pobiera nazwę użytkownika osoby, która jest aktualnie zalogowany do systemu operacyjnego Windows.
I
Wyświetla nazwę użytkownika osoby, która rozpoczęła bieżący wątek
Jeśli przetestować Environment.UserName użyciu RunAs, to daje nazwę konta użytkownika Runas nie użytkownik pierwotnie zalogowany do systemu Windows.
Należy użyć System.Windows.Forms.SystemInformation.UserName
dla faktycznie zalogowanego użytkownika jako Environment.UserName
nadal zwraca konto używane przez bieżący proces.
Dziękujemy za udostępnienie, zobacz także: System.Windows .Forms.SystemInformation.UserDomainName –
Oto kod (ale nie w C#):
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
Oto kod (teraz także w języku C#):
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;
}
}
Próbowałem kilka kombinacji z istniejących odpowiedzi, ale dawali mi
DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool
skończyło się używając
string vUserName = User.Identity.Name;
Które dały mi tylko rzeczywistą nazwę użytkownika domeny użytkownika.
Doskonały. Otrzymałem również tożsamość puli aplikacji. Ale twój kod rozwiązał mój problem. Dziękuję bardzo. – SuryaKavitha
Wygląda na to, że chciałeś podać nazwę użytkownika, który wysyła żądanie, czyli do kontrolera MVC lub Web API. To różni się od nazwy użytkownika, której proces przebiega pod numerem –
@BenAaronson Pytanie nic nie mówi o tym, jaka nazwa użytkownika uruchamia proces. Potrzebowałem aktualnie zalogowanej nazwy użytkownika domeny i wyszukiwanie przyniosło mi tę stronę, ten kod zakończył się dając mi to, czego potrzebowałem. –
bym całkowicie drugie inne odpowiedzi, ale chciałbym podkreślić jeszcze jedną metodę, która mówi
String UserName = Request.LogonUserIdentity.Name;
Powyższa metoda wróciła mi nazwę użytkownika w formacie: NazwaDomeny \ nazwa_użytkownika. Na przykład EUROPE \ nazwa_użytkownika
który różni się od:
String UserName = Environment.UserName;
jakim wyświetlane w formacie: nazwa_użytkownika
I wreszcie:
String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
który dał: NT AUTHORITY\IUSR
(podczas uruchamiania aplikacji na serwerze IIS) i DomainName\UserName
(podczas uruchamiania aplikacji w lokalnym systemie erver).
Pobierz aktualną nazwę użytkownika Windows:
using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
// <-- Keep this information secure! -->
Console.WriteLine("UserName: {0}", Environment.UserName);
}
}
Moja strona używa IIS, ale kiedy odwiedzam stronę z innego komputera w sieci, widzę "Network Service" jako nazwę użytkownika. Próbowałem wszystkich różnych opcji, ale nie daje mi to zalogowanego użytkownika, który przegląda stronę. Dowolny pomysł? – Si8
próbowałam wszystkie poprzednie odpowiedzi i znaleźć odpowiedź na MSDN po żaden z nich pracował dla mnie. Zobacz "UserName4" dla prawidłowego dla mnie.
Jestem po zalogowany użytkownik, jak wyświetlane przez:
<asp:LoginName ID="LoginName1" runat="server" />
Oto mały funkcja pisałem spróbować ich wszystkich. Mój wynik jest w komentarzach po każdym wierszu.
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;
}
Wywołanie tej funkcji powoduje zwrócenie zalogowanej nazwy użytkownika przez return.
Aktualizacja: Chciałbym zaznaczyć, że uruchomienie tego kodu na mojej instancji serwera lokalnego pokazuje mi, że Username4 zwraca "" (pusty ciąg), ale nazwa użytkownika 3 i nazwa użytkownika 5 zwracają zalogowanego użytkownika. Po prostu coś, na co należy zwrócić uwagę.
Moja strona używa IIS, ale kiedy odwiedzam stronę z innego komputera w sieci, widzę "Network Service" jako nazwę użytkownika. Próbowałem wszystkich różnych opcji, ale nie daje mi to zalogowanego użytkownika, który przegląda stronę. Dowolny pomysł? – Si8
UWAGA: Nie jest to jasne, ale powyższy przykład dotyczy kontekstu aplikacji WWW działającej w IIS, gdzie kilka z nich wyświetli nazwę konta Windows Server, które wykonuje pulę aplikacji ASP.Net. Jeśli działa jako program interaktywny lub usługa Windows, ta z HttpContext będzie niedostępna, a jedna z pozostałych powinna zostać użyta do znalezienia konta, na którym uruchamiany jest ten proces. –
W przypadku aplikacji Windows Forms, która miała być dystrybuowana do wielu użytkowników, z których wielu zalogowało się za pośrednictwem VPN, wypróbowałem kilka sposobów, które wszystkie zadziałały dla mojego lokalnego testowania maszyny, ale nie dla innych. Natknąłem się na artykuł Microsoftu, który zaadaptowałem i działa.
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;
}
}
}
spróbować
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
teraz wygląda lepiej
Tylko w przypadku, gdy ktoś szuka użytkownika Display Name w przeciwieństwie do Nazwa Użytkownika, jak ja .
Oto gratka:
System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
Add Reference do System.DirectoryServices.AccountManagement
w projekcie.
- 1. Jak uzyskać bieżącą nazwę użytkownika z Meteorem
- 2. MVC3 + Jak uzyskać bieżącą zalogowaną nazwę użytkownika użytkownika
- 3. Jak uzyskać nazwę użytkownika przy użyciu UID na Androida
- 4. Jak uzyskać bieżącą nazwę hosta w Heroku?
- 5. Jak uzyskać sformatowany JSON w .NET przy użyciu C#?
- 6. Jak uzyskać nazwę użytkownika w C/C++ w systemie Linux?
- 7. Jak uzyskać listę wszystkich baz danych z serwera sql w combobox przy użyciu C# .net
- 8. Jak uzyskać nazwę użytkownika Windows w Javie?
- 9. jak uzyskać nazwę użytkownika Windows w WPF
- 10. Jak przekonwertować datetime na znacznik czasu przy użyciu C#/.NET (ignorując bieżącą strefę czasową)
- 11. Pobierz bieżącą nazwę metody
- 12. Jak uzyskać nazwę użytkownika/wyświetlaną nazwę w BuddyPress?
- 13. Jak odzyskać bieżącą nazwę strony w JSP?
- 14. Jak uzyskać nazwę użytkownika z java.sql.Connection?
- 15. Jak uzyskać nazwę użytkownika właściciela procesu?
- 16. jak edytować TimescaleStart MS Project przy użyciu C# .net
- 17. Jak uzyskać nazwę użytkownika w usłudze Active Directory z wyświetlanej nazwy w języku C#?
- 18. Pobierz bieżącą nazwę funkcji w trybie ścisłym.
- 19. Pobierz bieżącą aktywną nazwę aplikacji
- 20. Jak uzyskać nazwę miesiąca w języku C#?
- 21. Pobierz bieżącą nazwę pliku w JSP
- 22. Jak sortować OrderedDictionary przy użyciu Linq w C# (przy użyciu .NET 3.5)?
- 23. Jak uzyskać tylko nazwy plików w katalogu przy użyciu C#?
- 24. jak uzyskać zapisane zapytania w tfs 2012 przy użyciu C#
- 25. Jak uzyskać opis wyjątku Java w C++ przy użyciu JNI?
- 26. Jak uzyskać kolor piksela w X, Y przy użyciu C#?
- 27. Jak uzyskać liczbę wierszy przy użyciu SqlDataReader w C#
- 28. Jak zmienić nazwę pliku przy użyciu NSFileManager
- 29. UITextView uzyskać bieżącą linię
- 30. Jak usunąć konto użytkownika systemu Windows przy użyciu C#
Czym to się różni od 'Environment.UserName'? –
to nie zadziała w Windows 8, jakikolwiek pomysł? –
To pytanie jest już omówione w tym linku ...... może być powtórzonym pytaniem. http://stackoverflow.com/questions/5218778/how-to-get-currently-logged-username- from-windows-service-in-net –