Я хочу установить обои для Windows 7 с помощью службы C#. Это нормально работает, когда служба запускается как консольное приложение. Но после установки услуги и запуска ее, тогда она не переключается между обоями. У кого-нибудь есть идея установить обои в окне сервис?Как сменить обои с помощью сервиса 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