首页 新闻 会员 周边

C#.NET開發的windows服務中,如何獲取當前登錄的系統帳號?

0
悬赏园豆:200 [待解决问题]

使用C#.NET開發了一個對文件進行實時監控的Windows 服務,需要記錄文件是由哪個用戶異動的.但是在Windows 服務中使用System.Environment.UserName獲取的是啟動服務的系統帳號

Local Service,如果我使用自己的帳號登錄,怎麼獲取自己的登錄帳號?

在網上查了好多,沒找到解決方式.

服務安裝設定為:

serviceProcessInstaller.Account = ServiceAccount.LocalService;    

serviceInstaller.StartType = ServiceStartMode.Automatic;

Aoysme的主页 Aoysme | 初学一级 | 园豆:0
提问于:2012-02-14 11:51
< >
分享
所有回答(3)
1

试试这个

using System.Diagnostics; 
using System.Management;static void Main(string[] args)
{
foreach (Process p in Process.GetProcesses())
{
Console.Write(p.ProcessName);
Console.Write("----");
Console.WriteLine(GetProcessUserName(p.Id));
}
Console.ReadKey();
}private static string GetProcessUserName(int pID)
{
string text1 = null;
SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);
try
{
foreach (ManagementObject disk in searcher1.Get())
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
inPar = disk.GetMethodParameters("GetOwner");
outPar = disk.InvokeMethod("GetOwner", inPar, null);
text1 = outPar["User"].ToString();
break;
}
}
catch
{
text1 = "SYSTEM";
}
return text1;
}
az235 | 园豆:8483 (大侠五级) | 2012-02-14 12:47

.NET開發的Windows服務運行後,無法獲取其進程的.

上面的代碼我試過.

支持(0) 反对(0) Aoysme | 园豆:0 (初学一级) | 2012-02-14 13:44
0

应该是取不到吧?

windows 服务程序,在没有任何人登录的时候,服务程序就已经在运行,此时取登录用户名,即使有办法获取,也取不到,因为还没有人登录。

另外,现在操作系统(比如 windows 7)支持同时几个人登录在上面。你觉得你的服务程序应该获取哪个用户呢?

杰克伦敦尘 | 园豆:274 (菜鸟二级) | 2012-02-14 14:01

ServiceBase.OnSessionChanged事件,可以獲取登錄時的Session,能不能通過這個獲取呢?

支持(0) 反对(0) Aoysme | 园豆:0 (初学一级) | 2012-02-14 14:33

@Aoysme: 现在操作系统(比如 windows 7)支持同时几个人登录在上面。你觉得你的服务程序应该获取哪个用户呢?如果有两个人同时通过远程桌面登录上来,文件发生改变,你怎么判断是哪个人改了文件?

OnSessionChanged 中获取的,应该是 serviceProcessInstaller.Account = ServiceAccount.LocalService , 这个有什么用?

支持(0) 反对(0) 杰克伦敦尘 | 园豆:274 (菜鸟二级) | 2012-02-15 15:40
0

通过进程判断?进程是有用户的

死白的man | 园豆:2135 (老鸟四级) | 2012-02-14 16:38

看來的想另外的方式了

支持(0) 反对(0) Aoysme | 园豆:0 (初学一级) | 2012-02-16 08:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册