Ветеран
Сообщения: 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
|