사용자가 한번 이상 로그온 하는 것을 막기에서 필자는 사용자가 한번이상 로그온하는 것을 막는 방법을 설명했다. 이제 더 나은 방법을 제공해준
Nick Brown에게 감사한다.
NTNAME.ZIP을 다운 받아라. 그리고 여기에 NTNAME.DOC의 발췌문이있다.
NTNAME - 사용자당 한번만 로그온하게 만드는 프로그램
NTNAME는 작은 유틸리티로 사용자가 한번만 로그온 할 수 있는 NT 네트웍을 만들 수 있도록 돕는다.
LOGOUT.EXE와 같은 자동 로그오프 프로그램(
Logout은 공개 프로그램이며 WinNT와 W95에서 동작한다을 본다)과 NTNAME을 결합하고 사용자 로그온 스크립트에대한 일관된 접근법을 가질 필요가 있다.
NT로 로그온할 때 PC는 사용자 이름과 Byte16=0x03로 구성되는 NetBIOS 이름을 추가한다. 이 이름은 방송 메시지(예: 프린트 잡이 종료될 때)를 전송하는데 사용된다.
NTNAME은 간단히 주어진 이름(명령행 변수로 지정된, 필자는 환경변수 %USERNAME%에서 추출할 수 있고했다.)이 현재 PC에의해 소유되는 지를 알아보기위해 검사한다. 만약 그렇다면 이 것은 어떠한 것도 출력하지 않으며 errorlevel 0를 리턴한다. 만약, 그렇지 않다면 이 프로그램은 소유한 시스템의 이름을 표준출력으로 출력하고(따라서 파일로 저장할 수 있다) errorlevel 1을 리턴한다.
이 errorlevel을 얻으면 이것은 이미 다른 PC에 로그인하고 있다는 것을 의미한다. 따라서 이 것을 검출하고 사용자를 로그오프시키는 로그온 스크립트를 작성할 수 있다. 로그온 스크립트는 다음과 같다.
NTNAME %USERNAME% %TEMP%\OTHERPC.TXT
if not errorlevel 1 goto logon_ok
for /f %%f in ('TYPE %TEMP%\OTHERPC.TXT') do
@echo Already logged onto %%f %0\..\logout.exe
:logon_ok
KIXtart와 같은 스크립트 도구로 메시지를 변경할 수 있다. 로그오프를 시작하기전에 사용자가 메시지를 읽을 수 있도록 하려면 로그오프하려는 프로세스를 찾고 이들을 종료할 시간을 허용해야 한다. 이것은 NT의 형식적인 대화상자를 볼 수 없기 때문이다.
주된 문제는 다중 도메인과 웍그룹을 가지고 있고, 따라서 같은 사용자 이름을 갖는 다른 사람이 있는 경우에 발생한다. 이 경우에 다른 도메인의 SMITH가 로그오프하지 않았기 때문에 또 다른 도메인의 SMITH라는 사용자가 로그온에 실패할 수 있다.
이 경우에 NTNAME2로 시도할 수 있다. 이것은 사용자가 지정할 수 있는 Byte16(기본값은 0xCE)으로 NetBIOS를 추가한다. 만약 각 도메인에대해 서로다른 Byte16 값을 사용하면 이문제를 피할 수 있다. 그러나 이것은 아주 느리고(이름을 추가할 때 종료시간을 검사하기위해 기다려야한다) Byte 16 값을 사용해야하는 NetBIOS 프로그램과 충돌할 위험이 있다.
사용자가 한번 이상 로그온 하는 것을 막기의 접근법에비해 불리한 점은 다음과 같은 두가지이다.
- 만약 홈 공유 서버가 다운되었다면 아무튼 로그온 할 수 있다(또 다른 BDC가 인계받을 것이다). 이 경우에 사람들이 작업하는 것을 중지시킬 수 없다.
- 다른 사용자가 우연히 홈 공유에 접속하면 이것은 허용된 공유만 잡아먹는다. 이것은 숨겨진 공유명을 가질때 조차도 아주 쉽게 일어난다. 예를들어 Fred와 Joe가 PC를 공유하고 Outlook를 사용하며 네트웍 드라이브를 통해 Outlook 막대를 공유할 수 있다. Fred가 홈 공유에대한 단축 아이콘을 아웃룩 막대에 두고, Joe가 이것을 클릭하면 비록 공유 수준 보호가 Joe의 접속을 거절할 지라도 Joe는 Fred의 홈 공유에 접속하고 이러한 접속은 Joe가 로그아웃할 때까지 접속은 유지된다. 네트웍 보안은 단지 접속한 후에 적용된다.