ネットワーク上に一部のPCしか表示されない [VBScript]
ネットワーク上に一部のPCしか表示されない事象が、度々発生し困っていた。どうも、Windows10のマスターブラウザの不具合らしい。
こちらのサイトを参考にさせていただきました。
https://amksystem.com/tech/win10info/
Windows10のみマスターブラウザにならないようにレジストリを変更するスクリプトを書いたのでメモしておきます。
On Error Resume Next
Dim WMI, OS, Value, Shell
do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7
'##### WScript5.7 または Vista 以上かをチェック
Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set OS = WMI.ExecQuery("SELECT *FROM Win32_OperatingSystem")
For Each Value in OS
if left(Value.Version, 3) < 6.0 then exit do
Next
'##### 管理者権限で実行
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas"
WScript.Quit
loop
Dim objWshShell, str
Set objWshShell = WScript.CreateObject("WScript.Shell")
if GetOSVersion() <> 10 then
'◆on
'msgbox "on"
str = objWshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\MaintainServerList")
if str <> "Auto" then
objWshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\MaintainServerList", "Auto", "REG_SZ"
end if
str = objWshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster")
if str <> "TRUE" then
objWshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster", "TRUE", "REG_SZ"
end if
else
'◆off
'msgbox "off"
str = objWshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\MaintainServerList")
if str <> "No" then
objWshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\MaintainServerList", "No", "REG_SZ"
end if
str = objWshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster")
if str <> "FALSE" then
objWshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster", "FALSE", "REG_SZ"
end if
end if
Function GetOSVersion()
Dim strComputer
Dim Wmi
Dim colTarget
Dim strWork
Dim objRow
Dim aData
strComputer = "."
Set Wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTarget = Wmi.ExecQuery( "select Version from Win32_OperatingSystem" )
For Each objRow in colTarget
strWork = objRow.Version
Next
aData = Split( strWork, "." )
strWork = aData(0) & "." & aData(1)
GetOSVersion = CDbl( strWork )
End Function