如何冒充登录用户?

时间:2018-04-27 08:10:15

标签: powershell impersonation security-context advapi32

我需要冒充登录用户。 由于ps安全上下文,它是必需的。

让我解释一下。 我有一个赢得服务。 和一个完整逻辑的DLL库。 和两个不同的客户端(.exe和ps) 通过dll使用此服务。

当我启动.exe并调用win服务时 一切都好。但是当我开始ps时 并尝试使用相同的win服务方法 使用相同的参数,它给了我这个错误: (还有我用同一个用户启动exe和ps 在同一台机器上)

未提供所需的模拟级别,或者提供的模拟级别无效。

实际上我尝试使用当前帐户进行假冒。 所以我找到了以下方法:

function ImpersonateLoggedOnUser
{
param
    (
        [Parameter(Mandatory = $true)]
        [IntPtr]
        $TokenHandle
    )

    $SUCCESS = $Advapi32::ImpersonateLoggedOnUser($TokenHandle); $LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error()

    if(-not $SUCCESS)
    {
        throw "ImpersonateLoggedOnUser Error: $(([ComponentModel.Win32Exception] $LastError).Message)"
    }
}

但我不能称之为。 它给了我以下错误: 您不能在空值表达式上调用方法。

0 个答案:

没有答案