我有通过代码更改壁纸的问题,我有下面的代码,因为每个SO / Codeproject线程谈论更改壁纸。 (到目前为止还没有在其他Win OS上测试过)
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(
int uAction, int uParam, string lpvParam, int fuWinIni);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @"C:\Temp\100_5715.JPG.bmp",
SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
我在这里遇到的实际问题是,如果我将上述代码作为Windows服务并将其安装为“本地服务”或“本地系统”,它根本不会工作。但是,如果我将上述代码作为ConsoleApp,那么事情就可以了。
我想知道这个问题是什么?是的我的用户帐户具有管理员权限。我也有Windows 7旗舰版。
谢谢:)
答案 0 :(得分:3)
服务在他们自己的会话中运行,自Vista以来称为会话0。出于安全原因,它与用户会话隔离,服务使用特权帐户运行。您正在更改该隐藏会话的桌面。
您无法使用服务。