我正在尝试使用Process.Start命令在azure函数(v2(中运行一个可执行文件,方法是提供用户的用户名和密码
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:homewwwrootfunctionnamebla.exe
如果我用以下命令运行该进程,它可以在azure 上工作
Proccess.Start(@"path/to/bla.exe")
我假设在用户下运行的进程没有访问可执行文件的权限。
我们可以允许用户访问azure函数中的可执行文件吗?
由于azure func的架构,您似乎无法指定用户权限。
尝试在ProcessStartInfo
中使用HostingPath
作为WorkingDirectory
private static string HostingPath =>
Environment.GetEnvironmentVariable("AzureWebJobsScriptRoot") // local_root
?? (Environment.GetEnvironmentVariable("HOME") == null
? Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
: $"{Environment.GetEnvironmentVariable("HOME")}/site/wwwroot");