TL; DR :我需要从IIS托管的ASP.NET应用程序中调用CreateProcessWithLogonW
,以便在其他帐户下调用外部可执行文件并将任务委派给该可执行文件。我该怎么办?
我不能简单地使用Process.Start
API的原因是外部可执行文件具有许多需要配置的COM依赖项。这需要确保有许多注册表项,并且该帐户具有启动和激活权限,而这些权限需要通过DCOM配置进行设置。可以说,对于我们拥有的每台服务器上的每个AppPool身份,这样做都难以控制。
这个想法是在每个系统上创建一个额外的交互式帐户,根据需要对其进行配置,然后测试外部可执行文件是否可以手动成功运行。
现在的问题变成了如何从ASP.NET应用程序启动此可执行文件并使其在新帐户下运行(只是可执行文件,而不是整个ASP.NET应用程序!)。
简单地调用CreateProcessWithLogonW
会导致“访问被拒绝”错误,有人告诉我这是AppPool身份特权不足的结果。
我一直在搜索Internet,并且看到了很多有关如何向AppPool身份授予文件系统权限的答案。但是,CreateProcessWithLogonW
的权限只不过是将身份更改为其他名称而已。
但是我仍然想知道是否有一种方法可以为此配置AppPool身份?
我不喜欢将身份更改为Local Service
或Local System
,就像其他地方建议的那样。我担心它会启用ASP.NET应用程序真正不需要的未知附加权限,从而可能改变相当大的代码库的安全隐患。
我承认我可能对身份更改有一种“ Here be dragons !!!” 类型的反应,但老实说,我也想知道为什么我不能简单地添加一个额外的权限改为现有的身份?