We set up a TCP/IP network that consisted of the latest and greatest workstations and servers. The workstations run Windows 95 and the servers run Windows NT 3.51, Service Pack 4 (SP4). Two weeks after we were up and running, the network started locking up, eventually forcing us to reboot the Primary Domain Controller (PDC). After a couple months of searching the Knowledge Base, talking to various third-party technical support teams, and removing and reinstalling third-party products, we contacted Microsoft technical support. I spent several more weeks and tried many solutions with no success. Finally, the MS support people suggested Knowledge Base article ID Q139320 because I got the startup event ID 12 and 14 error message, "A stripe set or volume set member listed in the configuration information is missing," every time I brought the PDC up.
Ftdisk produced these events because of the original configuration of the PDC with an external RAID box that I later removed (because of incompatibility). The Knowledge Base article suggests removing the \SYSTEM\DISK key under HKEY_LOCAL_MACHINE subtree, then using Disk Administrator to re-create the DISK key with the current information, and reassigning the drive letters. I highly recommend writing down or printing a screen capture (Ctrl+Print Scrn) of your Disk Administrator to ensure that the volume letters are reassigned properly.
The good news is that we have been up and running now for three weeks with no problems. The really good news is that people are once again talking to me and I get to keep my job until the next problem, which I may not be able to solve.
No-Script Group Migration
Situation: You need to move or mirror a very large local group from one server or domain to another server or domain on a Windows NT network. But keying in the data to look up user domains and IDs would take days. Microsoft and high-level support people say you can't automate this migration without writing lengthy scripts, but I've found a way.
To add a local group from one server and domain to a completely different server and domain or to a server in the same domain, go to the command prompt and locate the name of the group you want to copy. For example, you can key in
to get a list of all local groups on a server. Then, type
where groupname is the name of the group you identified from the list. This command writes the output to a .txt file that has three columns. Then, pull up the .txt file in Excel or another spreadsheet and parse the three columns into one column, left justified, or manually move the columns to the left. The next steps require that the usernames be in a column.
Next, go to the new server and domain you want to transfer the group to. Create a new group name (it can be anything). Then open the localgrp.txt file in Notepad, select and copy all usernames, go to NT's Add User dialog box, and paste the list by pressing Shift+Insert.
There's your list. Select OK and then OK again. You now have successfully inserted huge numbers of users and domain IDs in one shot. I added more than 700 in one copy and paste operation. As a bonus, I had created a master list of users in the group, and I can use it for maintenance and sorting out security issues. You can also move large local groups remotely if you have set up trusts on your domains.
I know people need this capability frequently. My solution is a great trick that saves a lot of time and heartache for this mundane task.
Repairing the Boot Sector
I came across a Windows NT workstation that was infected by the AntiEXE virus, which affects the boot sector. This infection happened because the user performed a Shut Down, Restart with a floppy in the disk drive. Using the NT Repair facility did nothing to fix the problem. I decided to try the old DOS trick of rewriting the boot sector using FDISK /MBR. Then I ran the NT Repair facility to fix the boot sector. This solution worked like a champ.
Speeding Up Shutdown
When I needed to restart Windows NT Server, it took a very long time to shut down, and most of this time, the hard disk seemed to be doing nothing. This
situation got worse after I installed Exchange Server on the machine. I noticed that if I used Control Panel, Services to manually stop most of the services, the shutdown process was
substantially faster. Instead of taking up to 20 minutes, a shutdown now takes about 2 minutes. I then wrote the .bat file in Listing 1, page 34, to automate the process. I hope this process saves you as much time and frustration as it has saved me. (You'll find the names in the .bat file under Control Panel, Services. Note that the particular services you'll want to stop will vary from system to system.)
To write this .bat file:
1. Go to the command line, and execute
net start > AllDown.BAT
2. Edit the lines, and add net stop
and a quotation mark at the beginning of each line and a quotation mark at the end of each line.
3. Manually shut down the services one by one, making sure the service does not return any errors. As you're shutting them down, edit AllDown.BAT so that the lines follow the same sequence. (You can use the sequence in Listing 1 as a base.)
4. Remove the services from AllDown.BAT that did not let you shut them down.
5. Remove several key services that you do not want to shut down manually (e.g., Workstation, Server, Computer Browser, Event Log, and Alerter).
Custom Explorer Views
Administrators familiar with Windows NT 4.0's Explorer shell may know that you can click Start and then Run and type in an ordinary or universal naming convention (UNC) path to open Explorer with that path displayed. For example, type
to open up a view of the Apps share on server MyServer.
Not as common, but certainly as useful, is the ability to enter just system, system32,
or favorites to open an Explorer view of %systemroot%\system, %systemroot%\system32,
favorites, respectively. This tip works for any directory in or for any subdirectory of a directory in your NT system's path. I find this tip pretty useful during day-to-day administration tasks.
Unattended NT 3.51 Installations
Christa Anderson's March article, "Designing Unattended NT Installations," was a good introduction to automated installation with Windows NT 4.0. She explained how NT 4.0 uniqueness database files let you customize an installation for a particular user. Though this approach is great for NT 4.0 users, some of us are still installing NT 3.51 on enough machines to make the unattended install worthwhile. Listing 2 is a simple batch file I made to change one line of an answer file on the fly.
You can install NT 3.51 (or NT 4.0) over the network by running setup.bat from the \winnt40\workstn\i386 directory on the machine SERVER. From the command line, you enter the computer name for the machine you want to install. The files 1.txt and 2.txt are the sections of the answer file before and after the line ComputerName = xxxx. This method should work equally well in NT 3.51, or for any other line in the answer file that you want to change from the command line.
A couple of hints: Make sure your Dynamic Host Configuration Protocol (DHCP) server is up and running while you're not watching an install that uses it, or you'll get stuck when NT tries to start the network and asks whether you want to see further error messages about DHCP. Also, specify the directory \winnt instead of choosing the default, or NT can end up in something like \winnt.0 if you have a previous boot.ini hanging around.
—Timothy M. Gales
LISTING 1: .BAT file for Automating Manual Shutdown
net stop "Microsoft Exchange Directory Synchronization"
net stop "Microsoft Exchange Internet Mail Connector"
net stop "Microsoft Exchange Message Transfer Agent"
net stop "Microsoft Exchange Information Store"
net stop "Microsoft Exchange Directory"
net stop "Microsoft Exchange System Attendant"
net stop "FTP Publishing Service"
net stop "Gopher Publishing Service"
net stop "World Wide Web Publishing Service"
net stop "License Logging Service"
net stop "Microsoft DHCP Server"
net stop "Microsoft DNS Server"
net stop "NT LM Security Support Provider"
net stop "Plug and Play"
net stop "Remote Access Autodial Manager"
net stop "Remote Access Server"
net stop "Remote Access Connection Manager"
net stop "Remote Procedure Call (RPC) Locator"
net stop "Remote Procedure Call (RPC) Service"
net stop "SAP Agent"
net stop "Schedule"
net stop "Spooler"
net stop "Telephony Service"
net stop "Windows Internet Name Service"
net stop "NT LM Security Support Provider"
LISTING 2: Batch File for NT 3.51 Unattended Installation
IF NOT "%1 "== "" GOTO START
IF EXIST UNATTEND.TXT DEL UNATTEND.TXT
TYPE 1.txt unattend.txt
ECHO ComputerName = %1 unattend.txt
TYPE 2.txt unattend.txt
winnt /s:\\server\winnt40\workstn\i386 /b /u:unattend.txt
ECHO SETUP (WORKSTATION NAME)