壁纸改变在Windows 7上

时间:2011-10-22 15:37:31

标签: c# .net windows-7

我有通过代码更改壁纸的问题,我有下面的代码,因为每个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旗舰版。

谢谢:)

1 个答案:

答案 0 :(得分:3)

服务在他们自己的会话中运行,自Vista以来称为会话0。出于安全原因,它与用户会话隔离,服务使用特权帐户运行。您正在更改该隐藏会话的桌面。

您无法使用服务。