在ServiceUser上下文中使用ServiceUser凭据/运行代码模拟Process.Start没有计算机的登录权限

问题描述

我们有几个部门在Windows域(活动目录)上具有单独的服务帐户,并希望使用它们来模拟一个控制台命令,以使用Process.Start运行它,并在代码中设置用户名和密码。 Process.Start需要一个ProcessInfo类对象,可以在其中提供域,用户名和密码。

这些命令需要在这些Service-Account凭据下运行,以访问相关的网络共享并使用cli程序操纵其结构和文件。

问题是,到目前为止,所有尝试都是通过在IIS服务器上的Webservice或api中运行Process.Start来进行的,我们仍然遇到同样的问题:似乎是必需的,ProcessInfo只能使用其他凭据,如果特定用户在运行的计算机上具有登录权限。 所有服务用户均无权直接登录计算机,因此该命令无法运行,并且会引发异常。

例外消息: 登录失败:未在此计算机上授予用户请求的登录类型

解决方法: 为了正确运行这些命令,我​​们正在考虑创建webservice / api的多个实例,并通过IIS AppPool模拟它并分配相关的服务用户。然后,每个实例都会运行一个特定的服务,在该服务中,IIS将为webservice / api提供服务。

我们的目标是在单个实例中完成webservice / api并动态更改从数据库中获取的用户凭据(用户名/密码)。

这有可能吗?

可以将不需要Service权限的用户分配给Windows Service(计算机/服务器)。

我只想问一下,在进行解决方法并为此解决方案创建多个实例之前,欢迎任何有帮助的意见或解决此挑战的不同想法。谢谢你,伙计。

解决方法

丢失的登录类型很可能是“作为批处理作业登录”-查看授予此权限的服务帐户是否有帮助。

实现此目标的确切步骤可能在不同版本的Windows中有所不同,但是会是这样;

  1. 启动“本地安全策略”应用(AKA secpol)转到“安全性”
  2. 转到设置|当地政策|用户权限分配
  3. 编辑“以批处理身份登录”并添加您的服务帐户

如果这不起作用,请不要忘记撤消上述操作-不要留下实验性的安全更改!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...