Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用服务c更改墙纸#_C#_Service_Wallpaper - Fatal编程技术网

C# 如何使用服务c更改墙纸#

C# 如何使用服务c更改墙纸#,c#,service,wallpaper,C#,Service,Wallpaper,我希望使用C#服务为Windows 7设置墙纸。 当服务作为一个控制台应用程序运行时,这可以正常工作。但是 安装并启动服务后,它不会在 墙纸。有人知道怎么把墙纸放在窗户里吗 服务 这是我的密码: private String file = @"C://Users//Alvin//Pictures//onepiece.jpg"; /// <summary> /// Set things in motion so your service can do its work. /// &l

我希望使用C#服务为Windows 7设置墙纸。 当服务作为一个控制台应用程序运行时,这可以正常工作。但是 安装并启动服务后,它不会在 墙纸。有人知道怎么把墙纸放在窗户里吗 服务

这是我的密码:

private String file = @"C://Users//Alvin//Pictures//onepiece.jpg";

/// <summary>
/// Set things in motion so your service can do its work.
/// </summary>
protected override void OnStart(string[] args)
{
    SetWallpaper(file, 0);
}

private void SetWallpaper(string WallpaperLocation, int WallpaperStyle)
{
    try
    {
        // Sets the actual wallpaper
        SystemParametersInfo(20, 0, "@" + WallpaperLocation, 0x01 | 0x02);
        // Set the wallpaper style to streched (can be changed to tile, center, maintain aspect ratio, etc.
        RegistryKey rkWallPaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
        // Sets the wallpaper style

        switch (walpaperStyle)
        {
            case 0:
                rkWallPaper.SetValue(@"WallpaperStyle", "0");
                rkWallPaper.SetValue(@"TileWallpaper", "1");
                break;
            case 1:
                rkWallPaper.SetValue(@"WallpaperStyle", "0");
                rkWallPaper.SetValue(@"TileWallpaper", "0");
                break;
            case 2:
                rkWallPaper.SetValue(@"WallpaperStyle", "2");
                rkWallPaper.SetValue(@"TileWallpaper", "0");
                break;
            case 3: // (Windows 7 and later)
                rkWallPaper.SetValue(@"WallpaperStyle", "6");
                rkWallPaper.SetValue(@"TileWallpaper", "0");
                break;
            case 4: // (Windows 7 and later)
                rkWallPaper.SetValue(@"WallpaperStyle", "10");
                rkWallPaper.SetValue(@"TileWallpaper", "0");
                break;
        }

        rkWallPaper.Close();
        cetakService("sukses set walpaper");
    }
    catch (Exception e)
    {
        cetakService("Error "+e.Message.ToString());
    }
}
private String file=@“C://Users//Alvin//Pictures//onepiece.jpg”;
/// 
///启动工作,使您的服务能够完成其工作。
/// 
启动时受保护的覆盖无效(字符串[]args)
{
设置墙纸(文件,0);
}
私有void SetWallpaper(字符串墙纸位置,int墙纸样式)
{
尝试
{
//设置实际的壁纸
系统参数信息(20,0,“@”+位置,0x01 | 0x02);
//将墙纸样式设置为Stretched(可以更改为平铺、居中、保持纵横比等)。
RegistryKey rkWallPaper=Registry.CurrentUser.OpenSubKey(“控制面板\\桌面”,true);
//设置墙纸样式
开关(walpaperStyle)
{
案例0:
rkWallPaper.SetValue(@“WallperStyle”,“0”);
rkWallPaper.SetValue(@“瓷砖壁纸”,“1”);
打破
案例1:
rkWallPaper.SetValue(@“WallperStyle”,“0”);
rkWallPaper.SetValue(@“瓷砖壁纸”,“0”);
打破
案例2:
rkWallPaper.SetValue(@“墙纸样式”,“2”);
rkWallPaper.SetValue(@“瓷砖壁纸”,“0”);
打破
案例3://(Windows 7及更高版本)
rkWallPaper.SetValue(@“墙纸样式”,“6”);
rkWallPaper.SetValue(@“瓷砖壁纸”,“0”);
打破
案例4://(Windows 7及更高版本)
rkWallPaper.SetValue(@“墙纸样式”,“10”);
rkWallPaper.SetValue(@“瓷砖壁纸”,“0”);
打破
}
rkWallPaper.Close();
cetakService(“sukses set walpaper”);
}
捕获(例外e)
{
cetakService(“错误”+e.Message.ToString());
}
}

如果您希望不时切换墙纸,请注意,OnStart()在服务启动时运行一次。我看不出您是如何通过SetWallpaper更改墙纸的。它实际上运行一次并设置墙纸。对于要执行的不同情况,没有实现不断更改墙纸的逻辑。
此代码应在服务第一次启动时更改墙纸,如果您希望这样做,请确保您的服务有足够的权限访问注册表值。

您是否尝试将服务运行的用户临时更改为管理员帐户,以确保这是您的代码问题,而不是权限问题?我有c将我的服务更改为本地系统帐户,但不起作用您使用Windows的实际帐户如何?它仍然不起作用谢谢您的回答:我在metod onStart中放置setWallpaper只是为了确保代码正常工作,但在我启动服务时,它不会更改墙纸我实际上使用计时器更改墙纸y分钟,好的。这是您的问题。您正在本地系统下运行服务,并试图从注册表访问HKEY_CURRENTUSER。请尝试访问HKEY_用户。它将为您提供计算机用户的SID列表。每个SID都有不同的控制面板和墙纸设置。请尝试查找当前用户的SID并更改设置墙纸。