用VB.NET服务实现更换桌面背景时候遇到的神奇问题!
我用写了一个服务程序,实现在Windows登录之前更换桌面背景。奇怪的是,如果我直接启动EXE那么它是有效的,桌面背景被更换了。
但是,这个EXE程序如果在服务中被Shell调用,则无效。
我仔细查看了一下,终于发现了其中的区别:
直接启动EXE,那么在任务管理器中可以看到它的用户是Administrator
而当在服务中被Shell调用的时候,它的用户是LocalSystem
显然LocalSystem账户下,程序无法区分是给哪个用户设置桌面背景,所以也就无效。
按照这个思路,我在服务中用下列代码,让程序获得指定用户权限
Dim username As String = "Administrator"
Dim password As Security.SecureString = ConvertToSecureString("My Password")
Dim domain As String = Nothing
Dim filename As String = "C:\1.EXE"
System.Diagnostics.Process.Start(filename, username, password, domain)
本来以为这样就OK了,可是结果让我大跌眼镜——居然出现未知错误!崩溃,彻底没辙了。
各位兄弟有何高见? 如何才能在Windows登录之前更换桌面背景。