ので、次はまた、靴底学ぶために続けるに便利getで来た最後のリファレンスドキュメントを共有して仕上げ、より完全な記事が見ていないので、今日は、現在のシステムのログインユーザー名の下に取得.NETを使用する方法を学びます。
まず、簡単な知識
私は多くの人最初の本能は、.NET環境変数を使用することであると信じています。
Environment.UserName
しかし、多くの人々がこの事実を、環境変数は、管理者ではなく、ログオンしているユーザーの実際の電流としてこれを取得するには、実行するには、管理者が影響を受けるので、私の記事があるかもしれません。
ここでの考え方はWINDOWSAPIを取得するために行って使用することです検索機能のAPIを取得するための様々な情報を通じて、
[DLLIMPORT(" Wtsapi32.dllが" )] 保護 静的 にexternを BOOL(のIntPtr hServer、WTSQuerySessionInformation INTセッションID、WTSInfoClass wtsInfoClass、アウトのIntPtr ppBuffer、アウト UINT pBytesReturned)。
第二に、具体的には、実装する方法を示し
1. APIインタフェースの導入
[DLLIMPORT(" Wtsapi32.dll " )] 保護 静的 にextern ボイドWTSFreeMemory(のIntPtrポインタ); [DLLIMPORT(" Wtsapi32.dllが" )] 保護 静的 にexternを BOOL(のIntPtr hServer、WTSQuerySessionInformation INTセッションID、WTSInfoClass wtsInfoClass、アウトのIntPtr ppBuffer、アウト UINT pBytesReturned)。
ここで紹介WTSFreeMemory方法は主に、アンマネージリソースを解放するために使用されます。
2. WTSInfoClassクラス定義
パブリック 列挙WTSInfoClass { WTSInitialProgram、 WTSApplicationName、 WTSWorkingDirectory、 WTSOEMId、 WTSSessionId、 WTSUserName、 WTSWinStationName、 WTSDomainName、 WTSConnectState、 WTSClientBuildNumber、 WTSClientName、 WTSClientDirectory、 WTSClientProductId、 WTSClientHardwareId、 WTSClientAddress、 WTSClientDisplay、 WTSClientProtocolType、 WTSIdleTime、 WTSLogonTime、 WTSIncomingBytes、 WTSOutgoingBytes、 WTSIncomingFrames、 WTSOutgoingFrames、 WTSClientInfo、 WTSSessionInfo }
3.現在ログオンしているユーザーの具体的な実装方法を取得します。
/// <要約> ///は、(管理者が実行するために使用することができる)現在のユーザーを取得 /// </要約> /// <戻り値> </戻り> パブリック 静的 文字列GETCURRENTUSER() { ;のIntPtrバッファ UINT STRLEN ; int型の cur_session = - 1。; VARのユーザ名= " SYSTEM " ; // これは"\ 0"以下のようにシステムを戻すと仮定 IF(WTSQuerySessionInformation(IntPtr.Zero、cur_session、WTSInfoClass.WTSUserName、OUTバッファ、OUT STRLEN)&&はstrlen>1) { ユーザー名 = Marshal.PtrToStringAnsi(バッファ)//は、これらがヌル終了文字列であるとして長さを必要としない WTSFreeMemory(バッファ); もし(WTSQuerySessionInformation(IntPtr.Zero、cur_session、WTSInfoClass.WTSDomainName、アウトバッファ、アウト)STRLEN && STRLEN> 1 ) { ユーザー名 = Marshal.PtrToStringAnsi(バッファ)+ " \\ " +名。// 先頭に追加のドメイン名 WTSFreeMemory(バッファ); } } 戻りユーザ名; }
第三に、リファレンスドキュメント