Мой сервис не меняет обои, и я не знаю почему - PullRequest
0 голосов
/ 28 января 2020

Я создал сервис, который «блокирует» фон рабочего стола, поэтому вы не можете его изменить. В общем, сервис сравнивает текущие обои с теми, которые я хочу, чтобы новые обои. Если это не то же самое, это перезаписывается. Это мой метод OnTimer (), который выполняется каждые 2 секунды:

private void OnTimer(object sender, ElapsedEventArgs e)
{
    if (!File.Exists("C:/Program Files/image.jpg"))
    {
        Assembly myAssembly = Assembly.GetExecutingAssembly();

        Stream s = myAssembly.GetManifestResourceStream("MsService.Gandalf.jpg"); ;
        byte[] b;

        using (BinaryReader br = new BinaryReader(s))
        {
            b = br.ReadBytes((int)s.Length);
        }

        while (true)
        {
            try
            {
                File.WriteAllBytes("C:/Program Files/image.jpg", b);
                break;
            }
            catch (Exception)
            {
                //stuff
            }
        }
    }

    //{path} is %Appdata%
    if (!FileEquals($"{path}\\Microsoft\\Windows\\Themes\\TranscodedWallpaper", "C:/Program Files/image.jpg"))
    {
        byte[] file = File.ReadAllBytes("C:/Program Files/image.jpg");

        while (true)
        {
            try
            {
                File.WriteAllBytes($"{path}\\Microsoft\\Windows\\Themes\\TranscodedWallpaper", file);
                break;
            }
            catch (Exception)
            {
                //stuff
            }
        }
    }
}

Это метод FileEquals:

static bool FileEquals(string path1, string path2)
{
    byte[] file1 = File.ReadAllBytes(path1);
    byte[] file2 = File.ReadAllBytes(path2);
    if (file1.Length == file2.Length)
    {
        for (int i = 0; i < file1.Length; i++)
        {
            if (file1[i] != file2[i])
            {
                return false;
            }
        }
        return true;
    }
    return false;
}

Когда я запускаю службу, он только меняет обои если я изменю это активно, даже если это уже другой, который я хочу, и только один раз. Служба не выдает ошибок при отладке, и служба не обрабатывает sh. Также, когда я меняю обои, срабатывают точки останова в if (! File.Equals (...)). Вирусный сканер тоже ничего не предупреждает. Почему это все равно не работает?

...