Запущен ли процесс как пользователь из службы Windows с ошибкой доступа Отказано? - PullRequest
4 голосов
/ 17 января 2010

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

System.ComponentModel.Win32Exception: Access is denied
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()

Код, который выдает это исключение:

_process = new Process
     {
     StartInfo =
        {
            Arguments = "",
            CreateNoWindow = true,
            ErrorDialog = false,
            FileName = instanceDirectory + "program.exe",
            WorkingDirectory = instanceDirectory,
            UseShellExecute = false,


            UserName = GetUserNameForInstance(_id),
            Password = GetPasswordForInstance(_id),
            Domain = ""
        },
    EnableRaisingEvents = true
    };

_process.Exited += ProcessExited;
_process.Start();

Опять же, это выбрасывается только при запуске в качестве службы Windows.Служба работает в локальной системе в соответствии с панелью «Службы» в Windows.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 17 января 2010

Возможно, лучше запустить службу в качестве учетной записи домена, которая имеет необходимые разрешения для операций ввода-вывода (включая разрешения ACL).

В приведенном ниже примере служба «Изменение» настроена для запуска в качестве локальной учетной записи службы. В вашем случае я бы предложил запустить службу как DOMAIN \ UserAccount.

alt text
(источник: windows-xp-services.com )

1 голос
/ 17 января 2010

Имеет ли учетная запись права доступа к ресурсам, которые вы используете?Имеет ли он возможность чтения и записи в каталог?

В таких ситуациях в 99% случаев это проблема с подготовкой.

...