相关疑难解决方法(0)

你如何在.NET中进行模拟?

是否有一种简单的开箱即用方式来模拟.NET中的用户?

到目前为止,我一直在代码项目中使用这个类来满足我的所有模拟要求.

有没有更好的方法来使用.NET Framework?

我有一个用户凭据集(用户名,密码,域名),表示我需要模拟的身份.

.net c# impersonation

128
推荐指数
5
解决办法
22万
查看次数

Windows假冒:美中不足的一个缺陷

在我掌握Windows中用户模仿的细微差别的过程中,我首先遇到了一个关于冒充远程数据库的问题(请参阅此SO问题),但我终于弄明白了.我的下一个障碍是撤消/取消/恢复(选择你最喜欢的动词)模仿.

我尝试了几个不同的模拟库,这对我来说是可信的:

结果与两个库相同.最佳实践要求使用LOGON32_LOGON_NEW_CREDENTIALS登录类型(请参阅Windows API LogonUser函数)进行远程数据库连接.当我这样做时,这是我的示例代码产生的:

// SCENARIO A
BEGIN impersonation.
Local user = MyDomain\MyUser
DB reports: MyDomain\ImpersonatedUser
END impersonation.
Local user = MyDomain\MyUser
DB reports: MyDomain\ImpersonatedUser << NOT EXPECTED HERE!!
Run Code Online (Sandbox Code Playgroud)

我找到的唯一解决方法是使用LOGON32_LOGON_INTERACTIVE登录类型,然后我得到:

// SCENARIO B
BEGIN impersonation.
Local user = MyDomain\ImpersonatedUser << EXPECTED, BUT NOT WANTED!
DB reports: MyDomain\ImpersonatedUser
END impersonation.
Local user = MyDomain\MyUser
DB reports: MyDomain\MyUser
Run Code Online (Sandbox Code Playgroud)

WindowsImpersonationContext.Undo方法的简洁描述来看,它似乎应该在方案A中起作用.

是否可以使用LOGON32_LOGON_NEW_CREDENTIALS登录类型进行恢复?

c# windows impersonation

9
推荐指数
2
解决办法
3943
查看次数

标签 统计

c# ×2

impersonation ×2

.net ×1

windows ×1