derek7467
asked on
VB.net and WMI logoff remote user
I am attempting to logoff a remote user using wmi via vb.net. I created the below code in the wmi code creator but it doesn't do anything it doesn't even error out:
Dim scope As New ManagementScope( _
"\\192.168.1.105\root\CIMV2")
scope.Connect()
Dim classInstance As New ManagementObject(scope, _
New ManagementPath("Win32_OperatingSystem.ReplaceKeyPropery='ReplaceKeyPropertyValue'"), _
Nothing)
' Obtain [in] parameters for the method
Dim inParams As ManagementBaseObject = _
classInstance.GetMethodParameters("Win32Shutdown_OperatingSystem")
' Add the input parameters.
inParams("Flags") = 0
' Execute the method and obtain the return values.
Dim outParams As ManagementBaseObject = _
classInstance.InvokeMethod("Win32Shutdown_OperatingSystem", inParams, Nothing)
ASKER
WMI is not required, i tried your solution and get a "expression expected" over the @ symbol...
Sorry that was C#. Try
System.Diagnostics.Process .Start("sh utdown.exe ", String.Format("/l /f /m \\{1}", remoteComputerName))
System.Diagnostics.Process
ASKER
I get th following when trying to run it:
Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
String.Format arguments are 0-based:
System.Diagnostics.Process .Start("sh utdown.exe ", String.Format("/l /f /m \\{0}", remoteComputerName))
System.Diagnostics.Process
ASKER
ehh that fixes the error but it doesnt run, it acts like i didnt type any command line switches in. I thought logoff doesnt work remote using the shutdown command?
I haven't used the Shutdown command to log off a remote user, but I would have thought that it could work.
Shutdown
http://technet.microsoft.com/en-us/library/bb491003.aspx
-l : Logs off the current user, this is also the default. -m ComputerName takes precedence.
-m [ \\ ComputerName ] : Specifies the computer that you want to shut down.
You can't use -l and -m together, since -m takes precedence over -l.
It looks like Win32_OperatingSystem.Win3 2Shutdown method has that capability to log off a user:
Win32Shutdown method of the Win32_OperatingSystem class
http://msdn.microsoft.com/en-us/library/aa394058(v=vs.85).aspx
Shutdown
http://technet.microsoft.com/en-us/library/bb491003.aspx
-l : Logs off the current user, this is also the default. -m ComputerName takes precedence.
-m [ \\ ComputerName ] : Specifies the computer that you want to shut down.
You can't use -l and -m together, since -m takes precedence over -l.
It looks like Win32_OperatingSystem.Win3
Win32Shutdown method of the Win32_OperatingSystem class
http://msdn.microsoft.com/en-us/library/aa394058(v=vs.85).aspx
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
This was the best option i was able to find.
System.Diagnostics.Process
Also check
https://www.experts-exchange.com/questions/22084990/Remote-LOGOFF-without-using-WMI.html