Подтвердить что ты не робот

Учетные данные при установке службы Windows

Я пытаюсь установить проект службы Windows С# с помощью проекта развертывания VisualStudio.Net.

Чтобы запустить проект развертывания, щелкните правой кнопкой мыши и выберите "установить" из контекстного меню, мастер установки запустится и в конце концов предложит мне диалоговое окно "Установить службу входа", в котором запрашивается имя пользователя и пароль.

Когда я устанавливаю службу с помощью утилиты sc из командной строки, мне не нужно предоставлять учетные данные.

Нужно ли мне создавать логин только для этой службы? Я бы предпочел использовать "Local System" или "Network Service" (не уверен, какая разница), как это делают другие службы.

4b9b3361

Ответ 1

Добавьте этот код в свой частный void InitializeComponent() метод в projectInstaller.Designer.cs файле в проект службы Windows.

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

если определение вашего процесса установки:

private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;

Ответ 2

Отметьте эту ссылку: http://msdn.microsoft.com/en-us/library/zt39148a (v = vs .110).aspx

Обратите внимание на этот раздел: Чтобы создать установщиков для вашей службы

Внесите изменения в свой ServiceProcessInstaller:

В конструкторе щелкните ServiceProcessInstaller1 для проекта Visual Basic или serviceProcessInstaller1 для проекта Visual С#. Задайте свойство Account для LocalSystem. Это приведет к тому, что служба будет установлена ​​и запущена в локальной учетной записи службы.

Ответ 3

В проекте, который содержит службу, добавьте класс Installer. Сделайте это примерно так:

[RunInstaller(true)]
public class MyServiceInstaller : Installer
{
    public MyServiceInstaller()
    {
        ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
        serviceProcessInstaller.Account = ServiceAccount.LocalSystem; // Or whatever account you want

        var serviceInstaller = new ServiceInstaller
        {
            DisplayName = "Insert the display name here",
            StartType = ServiceStartMode.Automatic, // Or whatever startup type you want
            Description = "Insert a description for your service here",
            ServiceName = "Insert the service name here"
        };

        Installers.Add(_serviceProcessInstaller);
        Installers.Add(serviceInstaller);
    }

    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);

        // This will automatically start your service upon completion of the installation.
        try
        {
            var serviceController = new ServiceController("Insert the service name here");
            serviceController.Start();
        }
        catch
        {
            MessageBox.Show(
                "Insert a message stating that the service couldn't be started, and that the user will have to do it manually");
        }
    }
}

Затем в проводнике решений щелкните правой кнопкой мыши проект развертывания и выберите "Вид > Пользовательские действия". Щелкните правой кнопкой мыши пользовательские действия и выберите "Добавить пользовательское действие...". Выберите папку приложения и выберите основной вывод проекта, который содержит эту службу. Теперь после установки будут выполнены пользовательские действия (Commit сверху). Вы можете добавить дополнительные методы (Install, Rollback, Uninstall), если вам нужны другие пользовательские действия.

Ответ 4

  • Откройте ProjectInstaller
  • Щелкните правой кнопкой мыши ProcessInstaller и выберите свойства
  • В раскрывающемся списке "Аккаунт" в разделе "Разное" выберите учетную запись, для которой ваша служба будет работать как

Подробнее о различных учетных записях и их привилегиях см. следующую ссылку:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx