2012-04-01 43 views
3

我有一个系统服务运行在我的Windows机器上,可以模拟当前登录的用户并以他们的名义启动应用程序(包括UI应用程序)。如何在Windows登录完成后运行某些操作?

当用户已经登录到他们的交互式会话,他们的桌面被创建等等时,它工作正常。

该服务的启动是自动的,所以每次重新启动后都会自动启动。如果在服务启动后立即尝试运行某个程序(需要UI访问),那么该程序可能会失败 - 可能是因为自动登录进程仍在进行中,桌面尚未创建,等等。

问题是:如果服务开始“提前”,它如何等待交互式会话被完全初始化(除了等待一些任意时间,这不是最优的)?

或者,服务能否“迟到”启动?是否有注册表项或文件夹或其他内容可用于将服务启动延迟至Shell准备就绪并且可以安全启动UI应用程序?

回答

2

最简单的两种方式“执行一些代码,当用户登录”是写一个bat文件,并且:

1)将.bat文件在启动文件夹 < =注意:的Windows 7/Vista中是否有“启动文件夹”

新的位置......或者......

2)创建一个新的任务,在登录调用.bat文件

我选择“2 )“给你更好的控制。如果需要,它还允许.bat文件“以管理员身份运行”。

如果你想使.bat文件短暂停顿(例如,以确保一切都完全初始化”,您可以添加‘平-w’你的.bat文件

例:

@rem Waits 5 seconds before continuing 
ping 1.1.1.1 -n 1 -w 5000 > nul 
+0

谢谢。我发现解决方案2工作得很好(我打电话给schtasks.exe以编程方式创建/删除ONLOGON任务),这个ping技巧很简洁(另一种选择是使用timeout/t)。 – Netspirit 2012-04-03 08:02:32

相关问题