C#으로 Username을 구하는 방법은 다양하게 존재합니다.. 그런데 서비스 안에서 Username 을 구하려고 할 경우에는 보통 방법으로는 구할 수가 없습니다. 그래서 찾은 방법을 소개 합니다.
우선 WMI에 대해서 알아야 합니다.
http://technet.microsoft.com/ko-kr/library/cc736575(WS.10).aspx
WMI에는 개체 정의 데이터베이스인 개체 저장소가 포함되어 있으며 저장소에서 개체를 수집하고 조작하며 WMI 공급자로부터 정보를 수집하는 WMI 개체 관리자가 포함되어 있습니다. 라고 되어 있습니다.
아래 소스처럼 쿼리문을 날려서 프로세스의 소유자에 대한 정보를 가져오면 Username이라고 볼 수 있습니다.
우선 WMI에 대해서 알아야 합니다.
http://technet.microsoft.com/ko-kr/library/cc736575(WS.10).aspx
WMI에는 개체 정의 데이터베이스인 개체 저장소가 포함되어 있으며 저장소에서 개체를 수집하고 조작하며 WMI 공급자로부터 정보를 수집하는 WMI 개체 관리자가 포함되어 있습니다. 라고 되어 있습니다.
아래 소스처럼 쿼리문을 날려서 프로세스의 소유자에 대한 정보를 가져오면 Username이라고 볼 수 있습니다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Management; //추가 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string ProcessName = "explorer.exe"; string ProcessOwner = ""; ObjectQuery x = new ObjectQuery("Select * From Win32_Process where Name='" + ProcessName + "'"); ManagementObjectSearcher mos = new ManagementObjectSearcher(x); foreach (ManagementObject mo in mos.Get()) { string[] s = new string[2]; mo.InvokeMethod("GetOwner", (object[])s); ProcessOwner = s[0].ToString(); break; } } } }
'Programming > C#' 카테고리의 다른 글
c# socket file transfer (0) | 2012.11.09 |
---|---|
특수 폴더(시스템 폴더 등) 가져오기(SHGetSpecialFolderPath) (0) | 2011.12.18 |
대리자와 콜백 함수 (0) | 2011.11.09 |
응용프로그램에서 관리자 권한 (0) | 2011.11.09 |