Как скрыть окно консольного приложения с помощью планировщика задач Windows

Я написал небольшое консольное приложение, которое перемещает резервные копии баз данных с одного компьютера на другое по электронной почте.

Как это работает, на машине, на которой работает SQL-сервер, у меня есть задание, созданное с помощью SQL, который выполняет резервное копирование определенных баз данных на том, который находится на том же компьютере, но не на том же томе, что и Server 2008rC. операционная система включена.

Таким образом, каждую ночь около часа ночи задание выполняется и выполняет резервное копирование определенных баз данных на том, который я использую только для резервного копирования определенных элементов базы данных. Теперь, каждый вечер около двух часов ночи я запускаю задачу Windows, которая вызывает мое консольное приложение, это консольное приложение представляет собой приведенный ниже код, очень простой. Все, что он делает, - это извлекает базы данных, упаковывает их все в один zip-файл, а затем отправляет по электронной почте резервные копии баз данных на определенную электронную почту, и с этого момента базы данных хранятся в разных местах, так что у меня есть небольшая избыточность.

Вот мой вопрос (ы).

1.) Каков минимальный объем разрешений, которые я должен установить для корневой папки, в которой хранятся резервные копии баз данных, чтобы планировщик задач Windows мог вызывать мое консольное приложение, а мое консольное приложение, в свою очередь, считывает, пиши и удаляй. Я хотел бы установить минимальное количество разрешений.

2.) Как запустить консольное приложение, скрыв окно консоли, чтобы, если администратор вошел в систему, они не увидели это окно, когда консольное приложение вызывается с помощью этого планировщика задач Windows. Теперь мне сказали, что я могу настроить свое приложение для оконных форм из консольного приложения, и это исправит мои проблемы с окном, но мой вопрос к этому заключается в том, означает ли это, что каждый день в 2 часа ночи это будет создавать новое окно и окна остаются активными? Другими словами, мне нужно запустить это консольное приложение, консольное приложение должно выполнить то, для чего предназначена его задача, и мне нужно, чтобы консольное приложение полностью завершилось, и не было больше запущено до 24 часов спустя в 2 часа ночи.

Вот весь код, который создает zip-файл, отправляет по электронной почте zip-файл и удаляет zip-файл. Какое направление я должен взять здесь?

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;

    namespace SendDatabaseMail
    {
        class Program
        {
            static void Main(string[] args)
            {

                string supportEmail = System.Configuration.ConfigurationManager.AppSettings["supportemail"],
                       dataFolder = System.Configuration.ConfigurationManager.AppSettings["datafolder"],
                       zippedFolder = System.Configuration.ConfigurationManager.AppSettings["zippedfolder"],
                       zippedfilename = System.Configuration.ConfigurationManager.AppSettings["zippedfilename"],
                       smtpServer = System.Configuration.ConfigurationManager.AppSettings["smtpserver"],
                       smtpPort = System.Configuration.ConfigurationManager.AppSettings["smtpport"],
                       mailSubject = System.Configuration.ConfigurationManager.AppSettings["mailsubject"],
                       mailBody = System.Configuration.ConfigurationManager.AppSettings["mailbody"],
                       mailPassword = System.Configuration.ConfigurationManager.AppSettings["mailpassword"],
                       databasesRepository = System.Configuration.ConfigurationManager.AppSettings["databasesrepository"];


                string repositoryPath = databasesRepository + "/" + dataFolder,
                       zipPath = databasesRepository + "/" + zippedFolder;

                if (Directory.GetFiles(repositoryPath).Length > 0)
                {

                    try
                    {
                        using (System.Net.Mail.MailMessage mm = new MailMessage(new MailAddress(supportEmail), new MailAddress(supportEmail)))
                        {
                            mm.Subject = mailSubject;
                            mm.Body = mailBody;

                            ZipFile.CreateFromDirectory(repositoryPath, zipPath + "/" + zippedfilename);

                            mm.Attachments.Add(new Attachment(zipPath + "/" + zippedfilename));

                            using (SmtpClient smtp = new SmtpClient(smtpServer, short.Parse(smtpPort)))
                            {
                                smtp.Credentials = new System.Net.NetworkCredential(supportEmail, mailPassword);
                                smtp.EnableSsl = true;
                                smtp.Send(mm);
                            }
                        }
                    }
                    catch (Exception ex)
                    { }

                    if (File.Exists(zipPath + "/" + zippedfilename))
                    {
                        File.Delete(zipPath + "/" + zippedfilename);
                    }
                }
            }
        }
    }

1 ответ

Я знаю, что через 3 года,

В Visual Studio, в свойствах проекта,

Выберите тип вывода для приложения Windows

Другие вопросы по тегам