How can you remotely login to a remote computer using C#? -
i'm trying write small command line application c# prompt username , password used login several remote computers sitting on same network/domain , start local session.
i've tried connecting remote computer , query remote pc's operating system info following code:
connectionoptions options = new connectionoptions(); managementscope scope = new managementscope(@"\\remote_computer_name"); scope.connect(); objectquery query = new objectquery("select * win32_operatingsystem"); managementobjectsearcher searcher = new managementobjectsearcher(scope, query); managementobjectcollection querycollection = searcher.get(); foreach (managementobject m in querycollection) { // display remote computer information console.writeline("computer name : {0}", m["csname"]); console.writeline("windows directory : {0}", m["windowsdirectory"]); console.writeline("operating system: {0}", m["caption"]); console.writeline("version: {0}", m["version"]); console.writeline("manufacturer : {0}", m["manufacturer"]); }
however, returns information on local pc i'm working on , not on remote pc.
am overlooking code? , there appropriate approach accomplish trying do?
i don't have remote machine right give working example, can try this. advapi32.logonuser
example:
[dllimport("advapi32.dll")] public static extern bool logonuser(string name, string domain, string pass, int logtype, int logpv, out intptr pht); intptr ptr; // logonuser("username", "remotemachine", "password", 2, 0, out ptr); logonuser("username", "remotemachine", "password", 9, 0, out ptr); windowsidentity windowsidentity = new windowsidentity(ptr); var impersonationcontext = windowsidentity.impersonate(); // code goes here... impersonationcontext.undo();
this logon type allows caller clone current token , specify new credentials outbound connections. new logon session has same local identifier uses different credentials other network connections. note: logon type supported logon32_provider_winnt50 logon provider. note: windows nt: value not supported.
http://www.pinvoke.net/default.aspx/advapi32.logonuser
edit
give try cassia
iterminalservicesmanager manager = new terminalservicesmanager(); using (iterminalserver server = manager.getremoteserver("servername")) { server.open(); foreach (iterminalservicessession session in server.getsessions()) { console.writeline("hi there, " + session.useraccount + " on session " + session.sessionid); console.writeline("it looks logged on @ " + session.logintime + " , " + session.connectionstate); } }
Comments
Post a Comment