1 [DllImport("user32.dll", CharSet = CharSet.Auto)] 2 public static extern int SystemParametersInfo( 3 int uAction, 4 int uParam, 5 string lpvParam, 6 int fuWinIni 7 ); 8 9 10 SystemParametersInfo(20, 1, FilePath, 1);
代码如上,环境:windows8.1 .NET Framework 4.5 C#
这段代码我试过了,在控制台程序中可以正常设置桌面背景,但是复制到windows服务中的话,就没有任何效果,单步跟踪调试和日志都显示,上面的第10行代码正常被执行了,而且没有任何异常,但是就是不能成功设置,不知道为什么,windows服务的权限LocalSystem、NetworkService、User也都试过了
求解惑
源码下载地址
http://www.kuaipan.cn/file/id_33316744214893036.htm?source=1
还请大家帮忙看下原因,感激不尽
Windows Service是跑在session 0中的,你登录后默认是在session 1中。每个session有自己的桌面,但是session 0没有桌面,没有自己的user profile。所以你的设置不会成功。
修改服务的登录属性,选择使用本地系统账户登录,并勾选允许服务与桌面交互,然后再试试看。
不行啊亲,勾选后依然无效,源码已经上传,麻烦看下,多谢
@momo314: 现在有事出去,下午回来帮你看看