Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Я когда-то делал так — Show Detail & Hidden Devices.vbs:
читать дальше »
Код: Выделить весь код
Option Explicit

Const SW_HIDE = 0


Dim elem
Dim strNewEnvironment

Dim objSWbemObjectEx
Dim lngProcessID

Dim objMenuItem

Dim strTempFileName


If Not WScript.Arguments.Named.Exists("ShowDevMgmt") Then
	With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
		strNewEnvironment = _
			"DEVMGR_SHOW_NONPRESENT_DEVICES=1" & vbCrLf & _
			"DEVMGR_SHOW_DETAILS=1"
		
		For Each elem In WScript.CreateObject("WScript.Shell").Environment("Process")
			If Left(elem, 1) <> "=" Then
				strNewEnvironment = strNewEnvironment & vbCrLf & elem
			End If
		Next
		
		
		Set objSWbemObjectEx = .Get("Win32_ProcessStartup").SpawnInstance_
		
		objSWbemObjectEx.ShowWindow           = SW_HIDE
		objSWbemObjectEx.EnvironmentVariables = Split(strNewEnvironment, vbCrLf)
		
		If .Get("Win32_Process").Create( _
			"wscript.exe """ & WScript.ScriptFullName & """ /ShowDevMgmt", Null, objSWbemObjectEx, lngProcessID _
			) <> 0 Then
			
			WScript.Echo "Process [wscript.exe """ & WScript.ScriptFullName & """] could not be created."
		End If
		
		Set objSWbemObjectEx = Nothing
	End With
Else
	With WScript.CreateObject("MMC20.Application")
		.Load "devmgmt.msc"
		
		With .Document
			With .ActiveView
				.Frame.Maximize
				
				For Each objMenuItem In .ScopeNodeContextMenu
					If objMenuItem.Path = "Вид->Показать скрытые устройства" Then
						If objMenuItem.Enabled = 1 Then
							objMenuItem.Execute
							
							Exit For
						End If
					End If
				Next
			End With
			
			If .IsSaved = 0 Then
				strTempFileName = GetTemporaryFileName()
				.SaveAs strTempFileName
				
				WScript.CreateObject("Scripting.FileSystemObject").DeleteFile strTempFileName, True
			End If
		End With
		
		.UserControl = 1
	End With
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
Function GetTemporaryFileName()
	Const TEMP_FOLDER = 2
	
	Dim strTempFile
	
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		Do
			strTempFile = .BuildPath(.GetSpecialFolder(TEMP_FOLDER), .GetTempName)
		Loop While .FileExists(strTempFile)
	End With
	
	GetTemporaryFileName = strTempFile
End Function
'=============================================================================

Рассчитано было на локализованную версию Windows XP. В отличном случае исправьте выделенное под текст Вашей ОС.

Отправлено: 02:01, 05-02-2014 | #2