2

我正在尝试从 ASP.NET 项目中调用旧的 VB6 dll(没有可用的源代码)。dll 使用 Windows 身份验证连接到服务器,因此我需要以特定用户的身份调用函数,而不是现在的 NETWORKSERVICE。

这最好在调用时确定,而不是在加载时确定,因为我正在模拟远程用户,并希望这是调用函数的用户,而不是应用程序用户,而不是现在的 NETWORKSERVICE。

因此,浏览器以 USER 身份运行,连接到模拟 USER 的应用程序,以 USER 身份调用 dll,但 dll 试图以 NETWORKSERVICE 而不是 USER 身份连接到远程服务器。

是否可以让这个 dll 以 USER 身份连接到远程服务器?或者,如果没有别的,以应用程序用户身份连接?

编辑:
通过调用Impersonate()远程用户的WindowsIdentity. 我工作的公司有一个习惯SecurityPrincipalSecurityIdentity所以我必须如何去获得它有点奇怪WindowsIdentity(它比 更深入一点User.Identity),但我之前成功地使用过这种方法,并且System.Security.Principal.WindowsIdentity.GetCurrent().Name 在冒充。

4

2 回答 2

1

我会首先尝试找出 DLL 如何以不同的用户身份连接(Process Explorer可以帮助解决这个问题)。DLL 是否可能与在以 NETWORKSERVICE 登录的机器上运行的服务(或其他进程)通信?如果是这样,您可以将该服务更改为以其他用户身份运行。只是抓住稻草,希望你能解决!

于 2012-06-19T23:19:34.590 回答
0

我最终确实找到了问题(这只会导致其他问题,但无论如何)结果是我AspCompat="true"在我的页面上丢失了一个。实际上问题是我使用的是“处理程序”而不是“页面”。处理程序没有 Pages 所具有的 STA 能力。发生的事情是每次我尝试访问 COM 组件时,都会发生线程切换(模拟丢失),因为应用程序在 MTA 中运行并且 COM 组件必须在 STA 中运行。

于 2012-08-14T19:10:56.673 回答