Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#模拟始终返回false_C#_Impersonation - Fatal编程技术网

C#模拟始终返回false

C#模拟始终返回false,c#,impersonation,C#,Impersonation,我尝试连接到另一台机器,使用LogonUser方法将文件保存到它。这是我的代码: public class ImpersonationHelper { [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)] public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPas

我尝试连接到另一台机器,使用LogonUser方法将文件保存到它。这是我的代码:

public class ImpersonationHelper
{
    [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

    enum LogonType
    {
        Interactive = 2,
        Network = 3,
        Batch = 4,
        Service = 5,
        Unlock = 7,
        NetworkClearText = 8,
        NewCredentials = 9
    }

    enum LogonProvider
    {
        Default = 0,
        WinNT35 = 1,
        WinNT40 = 2,
        WinNT50 = 3
    }

    public IntPtr Login(string username,string password)
    {
        // machineIp
        string domain = "XXX.XX.XX.XX";
        int logonType = (int)LogonType.Network;
        int logonProvider = (int)LogonProvider.WinNT50;
        IntPtr tokenHandle = IntPtr.Zero;
        bool returnValue = LogonUser(username, domain, password, logonType, logonProvider, ref tokenHandle);
        if (!returnValue)
        {
            int nErrorCode = Marshal.GetLastWin32Error();
            throw new System.ComponentModel.Win32Exception(nErrorCode);
        }
        return tokenHandle;
    }
}

LogonUser的返回值始终为false,Marshal.GetLastWin32Error()的值有时为0(表示“操作已成功完成”),然后为1326(表示“用户名或密码不正确”)。我的错误是什么?

域不应该保留机器名而不是IP地址吗?使用错误的参数是明显的故障模式。您首先必须尝试使用资源管理器登录到计算机。只要这不起作用,你就不可能在代码中实现它。向管理该机器的人寻求帮助。
domain
不应该保留机器名称而不是IP地址吗?使用错误的参数是明显的故障模式。您首先必须尝试使用资源管理器登录到计算机。只要这不起作用,你就不可能在代码中实现它。向管理那台机器的人寻求帮助。