To work around this issue, configure the DHCP Client on Windows 7 to request Broadcast responses from non-Microsoft DHCP Servers or Relay Agents. This is a two-part solution to this issue.
In Part 1, you must make a registry change that forces the DHCP Client in Windows 7 to always set the broadcast flag in DHCP DISCOVER messages. The change is based on the network adapter type that is inside the computer.
In Part 2, you must delete the registry entries that currently exist for the broadcast flag for each adapter. This applies the new instance of the network adapters that are installed in the client. After you restart the client at the end of Part 2, Windows then uses the global setting that you created in Part 1 to re-create the needed registry entries according to the interface. If a restart of Windows is not possible, please refer to the Note at the end of Part 2 for a method that creates the correct registry entries for each interface without restarting the computer.
Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base: 322756 How to back up and restore the registry in Windows
Part 1: Create a global registry entry that is based on the network adapter type
Follow these steps, and then exit Registry Editor:
- Click Start, click Run, type regedit, and then click OK.
- Locate and then click the following subkey in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325 -11CE-BFC1-08002BE10318}
Note Under this subkey, there is a sequence of subkeys. For example, you see "0000, 0001." - Select the subkey that matches the network adapter that is being used by the computer.
Note To determine the network adapter, match the "Driver Desc" entry to the name of the physical network adapter that is installed. - If this entry is present, note the type that is listed for the MediaType and PhysicalMediumType registry entries. This represents the kind of network interface (Ethernet, for example). However, you may instead see the registry entries *MediaType and *PhysicalMediumType, and each entry has a value of 0. If this is the case, you must be familiar with the kind of network adapter that is installed in the computer to create the correct registry entries in the following steps.
- Locate and then click the following subkey in the registry:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Dhcp\Parameters
- On the Edit menu, point to New, and then click Key.
- Type DhcpGlobalForceBroadcastFlag for the subkey's name.
- On the Edit menu, point to New, and then click Key.
- Type MediaType, and then press Enter.
The placeholder MediaType corresponds to the entry for the MediaType registry entry that you found in step 4. - On the Edit menu, point to New, and then click DWORD Value.
- Type PhysicalMediumType, and then press Enter.
The placeholder PhysicalMediumType corresponds to the entry for the PhysicalMediumType registry entry that you found in step 4. - On the Edit menu, click Modify.
- Type 1, and then click OK.
Example: For an Ethernet adapter, the following registry subkey would have the following values:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Dhcp\Parameters\DhcpGlobalForceBroadcastFlag\0\14
Registry entry and value: DWORD = 1
PhysicalMediumType can have the following values:
- 0 (Unspecified), value 0 or 1
- 9 (Wireless), value 0 or 1
- 14 (Ethernet), value 0 or 1
For more information and detailed values for MediaType and PhysicalMediumType, see the corresponding tables in the following Microsoft Developer Network article:
Note If you are performing a fresh image deployment of Windows 7 computers, you can directly add the global flag in the VIM image. This global flag will take effect when the interfaces are initialized on deployment.
Part 2: Delete the existing keys for broadcast flag according to the network interface
- Click Start, click Run, type regedit, and then click OK.
- Locate the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\<GUID>
Note The placeholder <GUID> represents the GUID for the appropriate network interface. - Delete the following registry entry:
DhcpConnForceBroadcastFlag
- Restart the computer.
- After the computer starts, you see that the client has successfully received an IP address through DHCP.
If you examine the registry subkey that you located in step 2, you find that the registry value DHCPConnForceBroadcastFlag is restored, and it has the value 1.
Note Restarting the computer is the recommended method. If you do not want to restart the computer, first stop and then disable the DHCP Client service. Then, delete the interface-specific subkey because the DHCP Client service backs up the registry when the service is stopped and started. However, the DHCP Client service does not back up the registry when the service stops during shutdown.
Wireless Adapters
Windows 7 maintains a cache of settings for every unique wireless network that Windows 7 connects to. This information is stored in a subkey that represents each wireless service set identifier (SSID) under the specific wireless adapter interface GUID. Together with other information about the wireless network, Windows 7 also maintains a specific value for DHCPConnForceBroadcastFlag. Therefore, for a wireless adapter, other than deleting the interface-specific registry entry, you must also visit every unique wireless network cache and delete the entry for DHCPConnForceBroadcastFlag. The location is stored in the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\<GUID>\<wirelessSSID>\DHCPConnForceBroadcastFlag
After you delete the DHCPConnForceBroadcastFlag entry, it is re-created based on the value of the global flag.
Note The placeholder
<wirelessSSID> is the hexadecimal string that represents a wireless network.