Azure функция Process.Start () C# от имени другого пользователя. Ошибка доступа запрещена. - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь запустить исполняемый файл в функции azure (v2) с помощью команды Process.Start, указав имя пользователя и пароль пользователя.

string nwPath = <path/to/bla.exe>
string dirName = Path.GetDirectoryName(nwPath);
var processInfo = new ProcessStartInfo()
            {
                WorkingDirectory = dirName,
                FileName = nwPath,
                UserName = <username>,
                Password = secureString,
                Domain = <domain>,
                UseShellExecute = false,
                Arguments = @"p1 p3",
                Verb = "runas"
            };
Process.Start(processInfo);

Эта функция запускается локально с использованием имени пользователя и пароля. , При развертывании этого на azure я получаю следующую ошибку Доступ запрещен

Я загрузил исполняемый файл в функции azure, нажав кнопку загрузки, и путь к исполняемому файлу

C:\home\wwwroot\functionname\bla.exe

Если я запускаю процесс с помощью следующей команды, он работает на azure

Proccess.Start(@"path/to/bla.exe")

Я предполагаю, что процесс выполняется под пользователем не имеет доступа к исполняемому файлу.

Можем ли мы дать пользователю разрешение на доступ к исполняемому файлу в azure функциях?

1 Ответ

0 голосов
/ 03 апреля 2020

Похоже, вы не можете указать разрешение пользователя из-за архитектуры azure fun c.

Попробуйте использовать HostingPath как WorkingDirectory в ProcessStartInfo

   private static string HostingPath =>
            Environment.GetEnvironmentVariable("AzureWebJobsScriptRoot") // local_root
            ?? (Environment.GetEnvironmentVariable("HOME") == null
                ? Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
                : $"{Environment.GetEnvironmentVariable("HOME")}/site/wwwroot");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...