使用c#和模拟在远程计算机上创建文件

时间:2018-08-08 09:29:48

标签: c# remote-server impersonation

我目前正在使用diskpart在远程应用程序上工作,以扩展远程计算机上的硬盘驱动器。在这种情况下,我需要远程计算机上diskpart的配置文件。

要在我的计算机上运行的虚拟服务器上进行测试,通过wmi等进行连接,就可以正常工作。

服务器未配置为 AD 。 Powershell Information显示,该域是 WORKGROUP

如果我尝试调用以下代码来实现我在远程计算机上写文件的目标,则出现错误,称为

  

“您不能使用此凭据登录,因为您的域是   不可用。确保您的设备已连接到组织的   网络,然后重试。如果您以前已经登录到此   具有不同凭据的计算机,您可以使用这些凭据登录   凭据”

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

private const int LOGON32_PROVIDER_DEFAULT = 0;
private const int LOGON32_LOGON_INTERACTIVE = 2;
private IntPtr m_Token;
private WindowsImpersonationContext m_Context = null;
m_Token = IntPtr.Zero;

bool logonSuccessfull = LogonUser(username, "WORKGROUP", pwd, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref m_Token);

if (logonSuccessfull == false)
{
   int error = Marshal.GetLastWin32Error();
   throw new Win32Exception(error);
}

WindowsIdentity identity = new WindowsIdentity(m_Token);
m_Context = identity.Impersonate();

string theStringToWrite = "Select Volume " + driveLocation + Environment.NewLine + "Extend Size=" + driveExtension + Environment.NewLine;
string filepath = @"C:\Temp\diskpartscript.txt";
string filetext = "Select Volume " + driveLocation + Environment.NewLine + "Extend Size=" + driveExtension + Environment.NewLine;

File.WriteAllText(filepath, filetext, Encoding.GetEncoding(1252));

我在做什么错了?

虚拟机称为Testserver。将Vhosts文件设置为testserver的ip地址。物理连接正常。

0 个答案:

没有答案