RUNONCE Key Is Processed Immediately When RUNDLL32 Is Called

Last reviewed: March 2, 1998
Article ID: Q173039
The information in this article applies to:
  • Microsoft Windows NT Workstation version 4.0
  • Microsoft Windows NT Server version 4.0

SUMMARY

If you place items in the RUNONCE key so that they will run the next time you log on, they will run as soon as Rundll32.exe is run, whether or not logging on is in progress. This is a design feature of Rundll32.exe for Windows NT 4.0 Server and Workstation.

This feature can cause problems, however, during an unattended installation of Windows NT version 4.0 using the Cmdlines.txt option. This article discusses these possible problems and some ways to avoid them.

MORE INFORMATION

To produce the desired results from the RUNONCE key, it is very important not to add any values to it before running Rundll32.exe options. This includes using a Windows 95-style .inf to add the RUNONCE registry values.

You can re-create and examine the effects of launching Rundll32.exe when there is a RUNONCE value ready to run by using the following steps:

  1. Create a directory called Test.

  2. Using Notepad.exe, enter the following lines, and then save as Runonce.reg in the Test directory:

          REGEDIT4
    

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
          \RunOnce]
          "doit"="c:\\test\\test.cmd"
    

  3. Using Notepad.exe, enter the following lines, and then save as Cmdlines.cmd in the Test directory:

          @ECHO OFF
          REGEDIT.EXE /s RUNONCE.REG
          rundll32 setupapi,InstallHinfSection DefaultInstall 128 .\test.INF
    

  4. Using Notepad.exe, enter the following lines, and then save as Test.cmd in the Test directory:

          @echo off
          ECHO HELLO WORLD
          PAUSE
    

  5. Using Notepad.exe, enter the following lines, and then save as Test.inf in the Test directory:

          [Version]
          Signature = "$Windows NT$"
    

          [DefaultInstall]
          AddReg = AddReg
          DelReg = DelReg
          UpdateInis = UpdateInis
    

          [AddReg]
          [DelReg]
          [UpdateInis]
    

  6. From an MS-DOS prompt, run Cmdlines.cmd; you will see that the file Test.cmd runs.

The following example shows the file Cmdlines.txt located in the $OEM$ directory of a Windows NT Deployment share, with the proper order to run Rundll32.exe and a Regedit script for Runonce. Optimally, it would be best to run all Rundll32.exe statements before running Regedit scripts.

   [Commands]
   "rundll32 setupapi,InstallHinfSection DefaultInstall 128 .\test.INF"
   "REGEDIT.EXE /s .\RUNONCE.REG"

For additional information on Windows NT 4.0 deployment and unattended installation, download the Windows NT 4.0 Deployment Guide from the following web site:

   http://www.microsoft.com/ntworkstation/info/deployguide.htm

Note: The deployment guide is valid for both Windows NT Workstation and Windows NT Server.
Keywords          : ntreskit ntsetup NTSrvWkst kbsetup
Version           : WinNT:4.0
Platform          : winnt
Issue type        : kbprb


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: March 2, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.