• 0

[VB.NET] Remote Shutdown


Question

I want to make a VB program to be a front end to the shutdown command. Basically, I want to run the following command:

shutdown /s /m \\Lab-1 /t 600 /f

I was able to do this with the following code:

Dim WshShell = CreateObject("WScript.Shell")

WshShell.Exec("shutdownm \\Lab-1 /t 600 /f")

The only thing is that:

A) This opens a command window, which I don't want the end user to see.

B) I want to know how to receive the result of this command, so I know if it was successful or if it failed.

Link to comment
https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/
Share on other sites

7 answers to this question

Recommended Posts

  • 0
  JK1150 said:
I want to make a VB program to be a front end to the shutdown command. Basically, I want to run the following command:

shutdown /s /m \\Lab-1 /t 600 /f

I was able to do this with the following code:

Dim WshShell = CreateObject("WScript.Shell")

WshShell.Exec("shutdownm \\Lab-1 /t 600 /f")

The only thing is that:

A) This opens a command window, which I don't want the end user to see.

B) I want to know how to receive the result of this command, so I know if it was successful or if it failed.

Try this to hide anything

  Quote
Dim WshShell = CreateObject("WScript.Shell")
WshShell.Exec("shutdownm \\Lab-1 /t 600 /f"),0,True

I do not know if this is what you want, but it pings the computer

  Quote
strComputer = "."
Set objWMIService = GetObject(_ 
	"winmgmts:\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
	("Select * From Win32_PingStatus where Address = 'PLACE_IP_ADDRESS_HERE'")

For Each objStatus in colPings
	If IsNull(objStatus.StatusCode) _
		or objStatus.StatusCode<>0 Then 
		WScript.Echo "Computer did not respond." 
	Else
		Wscript.Echo "Computer responded."
	End If
Next
  • 0

Thanks for both of those, they'll definitely help. I was wondering if the result of the command can be returned to with a .toString. For instance, if a "Network path not found." reply is returned, I want the user to know about that.

Also if I do

Dim WshShell = CreateObject("WScript.Shell")

WshShell.Exec("shutdownm \\Lab-1 /t 600 /f"),0,True

I get an end of statement expected on ,0,True, when I put it inside the brackets, the command does not seem to execute.

  • 0

There is an API available to shutdown the local and remote systems, give you a bit more control than just invoking WSH.

Anyway, API call is InitiateSystemShutdown, this single API allows timed shutdowns, instant shutdowns, reboots, shutdowns with messages, remote shutdown, etc., everything you will need, and AbortSystemShutdown (of course) can abort the timed shutdown.

Just pass null to the computer name to target the local system.

I have some old VB6 code that could handle it (would automatically attempt to get the privileges for it, if not it would fail nicely), but looking at it now, I see that it would be a problem converting it to .NET

  • 0

	Private Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" ( _
		ByVal lpMachineName As String, _
		ByVal lpMessage As String, _
		ByVal dwTimeout As Long, _
		ByVal bForceAppsClosed As Long, _
		ByVal bRebootAfterShutdown As Long _
	) As Long

	Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" _
	  (ByVal lpMachineName As String) As Long

	Public Sub goShutDownLab()
		Try
			InitiateSystemShutdown("Lab-Computer-1", "Lab will shut down in 10 minutes", 600, 1, 0)

That's the part with the shutdown, everything else works fine.

  • 0

Could try this.

<DllImport("advapi32.dll", SetLastError:=True)> _
Public Shared Function InitiateSystemShutdown(ByVal lpMachineName As String,ByVal lpMessage As String, ByVal dwTimeout As Integer, ByVal bForceAppsClosed As Boolean, ByVal bRebootAfterShutdown As Boolean) As Boolean
End Function

Or this to save time.

http://www.mentalis.org/soft/class.qpx?id=7

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • I've got a basic black and white laser printer that's connected via USB and doesn't do wifi etc. I think I'm going to be just fine.
    • Edge 138 is out with AI-powered history search and other changes by Taras Buria Microsoft has released Edge 138, the latest major update for the browser. Version 138.0.3351.55 introduces some interesting changes and new features, such as AI-powered history search. There are also several bug fixes and security patches. For regular users, the biggest and most important change in Edge 138 is AI-powered history search. This feature allows you to find sites in your history using synonyms, phrases, or misspelled words. Microsoft uses an on-device model, which does not send your data anywhere. Note that this feature is rolling out gradually, which means it might take a few days or weeks to show up on your system. Another useful change is new performance notifications. Performance and Extensions Detector notifications may appear in the main menu when the browser detects performance dips to help users learn about available performance-optimization tools. Autofill settings received a new consent toggle, which allows Microsoft to improve the autofill capabilities by collecting field names as you browse. This only applies to field names, such as "First Name, "Email," etc. It does not send the data you enter or autofill to Microsoft. Other changes include the following: Use the Primary work profile as the default profile to open external links. With this feature, for Windows, Edge checks if the Primary Work Profile exists and makes it the default profile for opening external links if available. Microsoft 365 Copilot Chat Summarization in Microsoft Edge Context Menu. This feature helps users quickly unpack and ask questions about their open page. Copilot on the Microsoft Edge New Tab Page (NTP). Users may see suggested work and productivity-related Copilot prompts in their search box on the NTP page. Adding support for viewing Sensitivity labels applied to a Microsoft Information Protection (MIP) Protected PDF. Enterprise customers can view sensitivity labels applied to MIP protected PDF to be well informed of the data classification to enable them to handle such sensitive documents. And here is what was fixed: Fixed an issue that caused WebDriver automation to fail in Microsoft Edge versions 133 and later. Fixed an issue where re-enabled textarea elements remained non-editable. This issue affected activating a role assignment in Privileged Identity Management. Finally, Edge 138 patches six security vulnerabilities, three of which were Microsoft Edge-specific, and the remaining three originated from Chromium. You can find details about those fixes here. The next Microsoft Edge update, version 139, is expected in the week of August 7, 2025.
    • “Never trust any statistics that you didn't forge yourself.”
    • Per the linked article: "Based on testing performed by Microsoft in December 2024 using Geekbench 6 Multi-core score comparing a selection of Windows 10 PCs with Intel Core 6th, 8th, and 10th generation processors and Windows 11 PCs with Intel Core 12th and 13th generation processors." I get that this is just advertising and all, but damn, I can smell the BS all the way over here. How about benchmarking 10 vs 11 on that same 13th gen processor? Apples and oranges make a lovely fruit salad but a terrible comparison. I mean shoot, my Windows 10 PC running a Ryzen 7 is faster than a Core2Duo running Windows 7, so Windows 10 is clearly faster. 🙄
    • KB5060829 installed in a test VM and the option isn't even there under "Taskbar behaviours". Installed it on a second VM, same. Installed it on metal... same. Typical quality of Nadella's Microsoft. If i doesn't shrink the taskbar vertical height down as @seeprime is implying, what's the point?
  • Recent Achievements

    • Week One Done
      suprememobiles earned a badge
      Week One Done
    • Week One Done
      Marites earned a badge
      Week One Done
    • One Year In
      runge100 earned a badge
      One Year In
    • One Month Later
      runge100 earned a badge
      One Month Later
    • One Month Later
      jfam earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      562
    2. 2
      +FloatingFatMan
      177
    3. 3
      ATLien_0
      167
    4. 4
      Michael Scrip
      125
    5. 5
      Xenon
      121
  • Tell a friend

    Love Neowin? Tell a friend!