【发布时间】:2020-09-07 00:00:44
【问题描述】:
我创建了一个 Web API,用于使用 Web API 安装最新版本的 exe,并通过 IIS 服务器托管。
进程正在下载->关闭->通过CLI安装Exe。
下载过程正常。
在关闭正在运行的 exe 异常时捕获“访问被拒绝”。
以下是我用来关闭正在运行的 exe 的代码块。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebGrease;
namespace API.Controllers
{
public class TestController : ApiController
{
public string Get()
{
foreach (Process p in Process.GetProcessesByName("APPLICATION NAME"))
{
try
{
p.Kill();
p.WaitForExit();
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
return "Aborted";
}
}
}
虽然调试相同的代码块工作正常,但在另一台计算机上测试时显示“访问被拒绝”。我猜这个问题与 Windows 身份验证有关。
【问题讨论】:
-
这是在什么帐户下运行的?该帐户是否具有管理权限?
-
@JazzmanJim 请指导如何检查。对不起,我是新手。
-
杀死进程需要在线程上调用
Kill方法,该线程的身份是本地管理员或该运行进程的同一帐户。这是每个 Windows 开发人员都应该学习的基本 Windows API 要求。如果您过去从未读过此类内容,那么是时候找一本 Windows 编程书籍了。顺便说一句,在 VS 中调试很容易欺骗你,因为存在大量差异,blog.lextudio.com/…
标签: c# asp.net-mvc iis asp.net-web-api windows-authentication