' Add Wireless (WiFi) Profile to Windows Vista or newer ' 9.11.2011 | Mikko Järvinen | University of Turku ' ' usage: wscript addwifi.vbs ProfileName "WiFi-Filename.xml" user|everyone ' (Export WiFi-config xml file using command: netsh wlan export profile ) Option Explicit 'On Error Resume Next Dim objFileSystem Dim objShell Dim strComputer Dim strServiceName Dim strInstallCommand Dim strUnInstallCommand Dim strQueryCommand Dim strWLANNotFoundTitle Dim strWLANNotFoundText Dim strWLANImportedTitle Dim strWLANImportedText Dim strWLANExistsTitle Dim strWLANExistsText Dim strOSVersionTitle Dim strOSVersionText Dim strWiFiProfileName Dim strWiFiProfile Dim strWiFiProfileScope Dim cmdArgs Dim intReturnCode Dim intAnswer Dim strWindowsVersion Dim strWindowsMajorVersion Set objShell = CreateObject("Wscript.Shell") Set objFileSystem = CreateObject("Scripting.FileSystemObject") Set cmdArgs = WScript.Arguments If WScript.Arguments.Count = 3 Then strWiFiProfileName = WScript.Arguments(0) strWiFiProfile = WScript.Arguments(1) Select Case LCase(WScript.Arguments(2)) Case "everyone" strWiFiProfileScope = "all" Case Else strWiFiProfileScope = "current" End Select strInstallCommand = "netsh wlan add profile filename=""" & strWiFiProfile & """ user=" & strWiFiProfileScope strQueryCommand = "netsh wlan show profile " & strWiFiProfileName strUnInstallCommand = "netsh wlan delete profile " & strWiFiProfileName strOSVersionTitle = strWiFiProfileName strOSVersionText = "Langattoman verkon profiilin luomiseen automaattisesti" & VbCrLf & _ "vaaditaan Windows Vista tai Windows 7." & VbCrLf & _ VbCrLf & _ "Wireless Profile automatic configuration requires" & VbCrLf & _ "Windows Vista or Windows 7." strWLANNotFoundTitle = strWiFiProfileName strWLANNotFoundText = "Langatonta verkkokorttia ei löytynyt tai" & VbCrLf & _ "'WLAN AutoConfig'-palvelu ei ole käynnissä." & VbCrLf & _ "Profiilin " & strWiFiProfileName & " lisääminen ei onnistunut." & _ VbCrLf & VbCrLf & _ "Wireless network card not found or" & VbCrLf & _ "'WLAN AutoConfig' service is not started." & VbCrLf & _ "Profile " & strWiFiProfileName & " couldn't be imported." strWLANImportedTitle = strWiFiProfileName strWLANImportedText = "Langaton verkko " & strWiFiProfileName & " lisätty onnistuneesti." & _ VbCrLf & VbCrLf & _ "Wireless network " & strWiFiProfileName & " imported successfully." strWLANExistsTitle = strWiFiProfileName strWLANExistsText = "Langaton verkko " & strWiFiProfileName & " on jo määriteltynä." & _ VbCrLf & VbCrLf & _ "Wireless network " & strWiFiProfileName & " is already configured." ' --- Check for a Windows Version strWindowsVersion = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion") strWindowsMajorVersion = Left(strWindowsVersion, 1) If strWindowsMajorVersion = "5" Then ' Windows 2000, XP, 2003 intAnswer = MsgBox(strOSVersionText , vbOKOnly + vbCritical + vbSystemModal, strOSVersionTitle) WScript.Quit(1) End If ' --- Check if a wlansvc is Started strComputer = "." ' Local Computer strServiceName = "wlansvc" ' WLAN AutoConfig If Not isServiceRunning(strComputer,strServiceName) Then intAnswer = MsgBox(strWLANNotFoundText , vbOKOnly + vbCritical + vbSystemModal, strWLANNotFoundTitle) WScript.Quit(2) End If ' --- Check if Profile already exists intReturnCode = objShell.Run(strQueryCommand, 0, True) If intReturnCode = 0 Then ' WiFi Profile already exists intAnswer = MsgBox(strWLANExistsText , vbOKOnly + vbInformation + vbSystemModal, strWLANExistsTitle) WScript.Quit(0) End If ' --- Add WiFi Profile intReturnCode = objShell.Run(strInstallCommand, 0, True) If intReturnCode = 1 Then ' something went wrong intAnswer = MsgBox(strWLANNotFoundText , vbOKOnly + vbCritical + vbSystemModal, strWLANNotFoundTitle) WScript.Quit(1) Else ' WiFi Profile imported intAnswer = MsgBox(strWLANImportedText , vbOKOnly + vbInformation + vbSystemModal, strWLANImportedTitle) WScript.Quit(0) End If Else intAnswer = MsgBox("WiFi profile name or file name not defined.", vbOKOnly + vbCritical + vbSystemModal, "Error") WScript.Quit(2) End If ' ----- Functions ----- ' Function to check if a service is running on a given computer Function isServiceRunning(strComputer,strServiceName) Dim objWMIService, strWMIQuery strWMIQuery = "Select * from Win32_Service Where Name = '" & strServiceName & "' and state='Running'" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") If objWMIService.ExecQuery(strWMIQuery).Count > 0 Then isServiceRunning = true Else isServiceRunning = false End If End Function