注册 登录
编程论坛 VB.NET论坛

用VB.NET服务实现更换桌面背景时候遇到的神奇问题!

boobsoft 发布于 2010-07-05 17:36, 749 次点击
我用写了一个服务程序,实现在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登录之前更换桌面背景。

0 回复
1