C# 서비스를 사용하여 Windows 7 용 배경 화면을 설정하고 싶습니다. 서비스가 콘솔 응용 프로그램으로 실행될 때이 작업이 정상적으로 작동합니다. 그러나 서비스를 설치하고 시작한 후에는 월페이퍼 사이를 전환하지 않습니다. 누구든지 창 안의 벽지를 설정하는 방법을 알고 있습니까 서비스? 당신이 수시로 배경 화면을 전환하고자하는 경우 서비스가 시작되면, ONSTART()가 한 번 실행되는 것을 유의하시기 바랍니다서비스를 사용하여 배경 화면을 변경하는 방법 C#
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());
}
}
서비스가 일시적으로 관리자 계정으로 실행되는 사용자를 변경하여 코드가 아닌 권한에 문제가 없는지 확인해 봤습니까? – JMK
로컬 시스템 계정으로 서비스를 변경했지만 작동하지 않습니다. – user3012452
Windows를 사용하는 실제 계정은 어떻습니까? – JMK