컴퓨터 가 LMHosts 파일 을 사용 하 는 것 을 방지 하기 위해 vbs 를 사용 합 니 다.

물음:
안녕하세요,스 크 립 트 전문가!어떻게 컴퓨터 가 LMHosts 파일 을 사용 하 는 것 을 방지 합 니까?
-- MJ
답:
안녕하세요,MJ.이것 은 재 미 있 는 문제 입 니 다.적어도'스 크 립 트 전문가'에 게 는 이 렇 습 니 다.스 크 립 트 작성 이 어려워 서가 아니 라이것 은 사실 매우 간단 하 다.어 려 운 것 은(적어도 우리 에 게)윈도 GUI 에서 LMHosts 설정 을 찾 는 것 이다.이것 은 우리 가 스 크 립 트 가 실제로 작용 하 는 지 검증 할 수 있 도록 해 야 할 일이 다.맹목적 으로 찾 은 후에 우 리 는 마침내 찾 아야 할 것 을 찾 았 다.LMHosts 文件
"스 크 립 트 전문가"와 마찬가지 로 아무것도 모 르 지 않도록(그렇지 않 기 를 바 랍 니 다)다음은 이 대화 상자 에 도착 하 는 작업 절차 입 니 다.
1.
'제어 판'의'네트워크 연결'에서 임의의 네트워크 연결 을 선택 하 십시오.
2.
이 연 결 된'속성'대화 상자 에서'인터넷 프로 토 콜(TCP/IP)'을 선택 하고'속성'을 누 르 십시오.
3.
'인터넷 프로 토 콜(TCP/IP)속성'대화 상자 에서'고급'을 누 르 십시오.
4.
"고급 TCP/IP 설정"대화 상자 에서"WINS"옵션 을 봅 니 다.설정 이 여기 있 습 니 다.
우리 가 말 한 것 처럼 LMHosts 체크 상 자 를 찾 는 것 이 가장 어 려 운 부분 입 니 다.체크 상자 지우 기(즉,컴퓨터 가 LMHosts 파일 을 사용 하 는 것 을 방지 하 는 것)는 간단 합 니 다.

On Error Resume Next  
Const USE_WINS = False
Const USE_LMHOST_FILE = False

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")
errResult = objNetworkSettings.EnableWINS(USE_WINS, USE_LMHOST_FILE)

Wscript.Echo errResult
우 리 는 스 크 립 트 에서 상수(USEWINS 와 USELMHOST_FILE)그들 을 False 로 설정 합 니 다.우 리 는 상수 USE 를 사용한다.WINS 는 스 크 립 트 에 WINS(Windows Internet 명명 서비스)의 사용 을 완전히 비활성화 하 라 고 알려 주 었 습 니 다.그렇지 않 으 면(WINS 를 계속 사용 하려 면 LMHosts 파일 만 사용 하지 않 음)USEWINS 의 값 을 True 로 설정 합 니 다.
동시에 상수 USELMHOST_FILE 는 스 크 립 트 에 LMHosts 파일 을 사용 할 지 여 부 를 알려 줍 니 다.LMHosts 를 사용 하지 않 기 때문에 이 상 수 를 False 로 설정 합 니 다.생각 이 바 뀌 어 LMHosts 를 사용 하기 로 결정 했다 면 이 상수 만 True 로 설정 하 십시오.
물론 간단 하 다.스 크 립 트 를 작성 하여 문 제 를 해결 하 는 것 은 항상 매우 간단 하 다.
응,그래:거의 항상.
다음 단 계 는 로 컬 컴퓨터 에 연 결 된 WMI 서비스 입 니 다.다음은 다음 줄 코드 입 니 다.
Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")
맞 는 말씀 입 니 다.이 건 좀 심상 치 않 습 니 다.대부분의 WMI 스 크 립 트 에서,이 때 우 리 는 ExecQuery 방법 을 호출 해 야 했 고,이어서 ExecQuery 는 우리 에 게 대상 의 집합 을 되 돌려 주어 처리 해 야 했다.이 스 크 립 트 에서 ExecQuery 를 사용 하지 않 았 음 을 알 수 있 습 니 다.왜 안 써 요?네,EnableWINS 방법(WINS 와 LMHosts 파일 을 닫 는 방법)은'정적'방법 입 니 다.정적 방법 으로 대상 의 집합 을 조작 할 수 없습니다.그것 은 클래스 자체 만 조작 할 수 있다.이것 은 당신 이 Win 32 에 귀속 되 었 음 을 나타 낸다NetworkAdapter Configuration 클래스(Get 방법 사용)를 사용 한 다음 EnableWINS 를 호출 합 니 다.최종 결 과 는 모든 종류의 인 스 턴 스(즉,컴퓨터 의 모든 네트워크 어댑터)가 LMHosts 를 사용 하지 않 습 니 다.네트워크 어댑터 가 여러 개 있 으 면 한 어댑터 에서 LMHosts 를 사용 하지 않 고 다른 어댑터 에서 사용 할 수 있 는 규칙 이 없습니다.모두 사용 하거나 모두 사용 하지 않 을 수 있 습 니 다.
이때,우 리 는 EnableWINS 방법 만 호출 하여 상수 USE 를 순서대로 전달 합 니 다.WINS 와 USELMHOST_FILE:
errResult = objNetworkSettings.EnableWINS(USE_WINS, USE_LMHOST_FILE)
변수 errResult 의 반환 코드(작업 결과)를 캡 처 했 습 니 다.우 리 는 스 크 립 트 의 마지막 줄 에서 이 반환 코드 를 보 여 줍 니 다.errResult 가 0 이면 작업 이 성공 하고 LMHosts 가 비활성화 되 었 음 을 표시 합 니 다.errResult 가 0 이 아 닌 어떤 값 이 라면,응,문제 가 생 길 거 야.이 경우 EnableWINS 오류 코드 의 자세 한 목록 을 얻 기 위해WMI SDK검사 해 야 합 니 다.
이 문제 의 답 은 바로 이렇다.현재 LMHosts 를 비활성화 할 수 있 는 스 크 립 트 를 가지 고 있 으 며,'스 크 립 트 전문가'는 GUI 에서 LMHosts 설정 을 찾 는 방법 을 알 게 되 었 습 니 다.이것 은 윈 윈 의 결과 다!

좋은 웹페이지 즐겨찾기