小编Loc*_*eer的帖子

MVC:以不同的用户启动进程 - 不工作

我需要从MVC控制器在服务器上运行可执行文件.问题:可执行文件位于Program Files文件夹中,并且还将从注册表中读取值.我已将相应文件夹的执行权限授予我的应用程序池.所以这是我的问题:

只运行exe Process.Start(exe)将启动可执行文件,然后由于无法读取注册表值(无访问权限)而退出并出现错误.

将本地管理员用户分配为ProcessStartInfo失败:

var exe = @"C:\Program Files (x86)\[path to exe]";

var secString = new SecureString();
secString.AppendChar('character');
//...
secString.MakeReadOnly();

var procInfo = new ProcessStartInfo(exe, settingsPath)
{
    UseShellExecute = false,
    UserName = "[username]",
    Domain = "[domain]",
    Password = secString,
    RedirectStandardError = true,
    RedirectStandardOutput = true,
    RedirectStandardInput = true,
    Verb = "runas"
};
var proc = Process.Start(procInfo);
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

这将导致conhost和可执行文件崩溃.

使用这样的模拟:

var impers = new ImpersonationService();
impers.PerformImpersonatedTask("[user]", "[domain]", "[password]",
ImpersonationService.LOGON32_LOGON_INTERACTIVE, ImpersonationService.LOGON32_PROVIDER_DEFAULT, new Action(RunClient));
Run Code Online (Sandbox Code Playgroud)

...用RunClient()简单的方法使用Process.Start(exe)将绝对没有!运行该方法但该过程未启动.我知道该方法是运行的,因为我添加了这一行: …

c# asp.net-mvc impersonation process

2
推荐指数
1
解决办法
1683
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

impersonation ×1

process ×1