ネットワーク上に一部の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