Window Service程序中如何获取登陆用户的信息
2012-03-27 14:41
666 查看
在window form程序中, 获取当前用户的信息是很容易的一件事情。然而,在window service中, 如何获取当前活动的(登陆的)用户的信息,.NET 并没有给出一种很容易的方法。多数情况下,用户需要调用底层API以达到此目的。如果想在services中启动一个线程并且运行在当前活动的用户UI界面上,获取当前活动的用户,更是必须的操作。
在windows底层的api中,提供了以下的方法来满足需求:
WTSGetActiveConsoleSessionId: 获取当前active User的 session ID。
CreateProcessAsUser:用当前用户创建一个新的进程。
下面的程序提供了两个方法,一是获取当前活动的用户包括域名和用户名,二是用当前用户创建一个新的进程。
View Code private void RunCommand(object state)
{
try
{
var cmdBatch = state as string;
if (string.IsNullOrEmpty(cmdBatch))
return;
string applicationName = null;
if (Path.GetExtension(cmdBatch).Equals(".BAT"))
applicationName = "cmd.exe";
// launch the application
ApplicationLoader.PROCESS_INFORMATION procInfo;
ApplicationLoader.StartProcessAndBypassUAC(applicationName, "\"" + cmdBatch + "\"", out procInfo);
// check the process and get the complete or not.
var process = Process.GetProcessById((int)procInfo.dwProcessId);
if(process != null)
process.WaitForExit();
}
catch (Exception ex)
{
EventLog.WriteEntry(ex.Message, System.Diagnostics.EventLogEntryType.Error);
}
} 通过以上的方法,可以看到,当前启动的进程运行在活动用户的界面。
在windows底层的api中,提供了以下的方法来满足需求:
WTSGetActiveConsoleSessionId: 获取当前active User的 session ID。
CreateProcessAsUser:用当前用户创建一个新的进程。
下面的程序提供了两个方法,一是获取当前活动的用户包括域名和用户名,二是用当前用户创建一个新的进程。
View Code private void RunCommand(object state)
{
try
{
var cmdBatch = state as string;
if (string.IsNullOrEmpty(cmdBatch))
return;
string applicationName = null;
if (Path.GetExtension(cmdBatch).Equals(".BAT"))
applicationName = "cmd.exe";
// launch the application
ApplicationLoader.PROCESS_INFORMATION procInfo;
ApplicationLoader.StartProcessAndBypassUAC(applicationName, "\"" + cmdBatch + "\"", out procInfo);
// check the process and get the complete or not.
var process = Process.GetProcessById((int)procInfo.dwProcessId);
if(process != null)
process.WaitForExit();
}
catch (Exception ex)
{
EventLog.WriteEntry(ex.Message, System.Diagnostics.EventLogEntryType.Error);
}
} 通过以上的方法,可以看到,当前启动的进程运行在活动用户的界面。
相关文章推荐
- Window Service程序中如何获取登陆用户的信息
- 微信小程序如何获取openid及用户信息
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 【微信小程序】用户首次进入小程序拒绝授权,如何再次调用授权页面,获取用户信息userInfo
- 微信小程序如何获取用户信息
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 支付宝小程序--如何获取用户信息
- Android程序Crash时如何获取异常信息
- 【UWP开发】如何通过UWP获取系统用户Gamertag或者UserName等用户信息
- 微信小程序判断用户是否需要再次授权获取个人信息
- 采用CDN加速后,如何在程序里获取用户IP地址
- 如何获取WordPress当前用户信息
- 一起学android之如何获取手机程序列表以及程序相关信息并启动指定程序 (26)
- 如何获取微信用户的名字等信息
- 微信小程序获取用户信息官方推荐方案
- 通过给事件处理程序传递this参数,获取事件源对象的引用。单机提交按钮时在信息框中显示用户输入的字符。
- (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835
- 微信小程序维护登录态与获取用户信息_0
- mysql+jsp,在jsp页面连接了数据库,已成功获取数据库字段,请问如何取到当前用户对应的信息
- C#微信小程序服务端获取用户解密信息