- Windows Server
GPT.INI C:\Windows\SYSVOL\domain\Policies\{GUID}\GPT.INI
GPT.INI: the INI file at the root of a GPO in SYSVOL; its Version line, compared with Active Directory, tells clients whether the GPO has changed.
What it’s for
The Group Policy client service reads GPT.INI to get the GPO’s version number on the SYSVOL side, and compares it with the versionNumber attribute of the GPO container in Active Directory. A version equal to the one already applied avoids reprocessing the GPO. The two numbers must stay in sync, and a gap between them is a classic sign of replication trouble.
What it contains
[General]Version=65537displayName=Default Domain PolicyVersion is a 32-bit integer. The high 16 bits count changes to the user part, the low 16 bits those to the computer part. For example, 65537 is 0x00010001, meaning version 1 for the user and 1 for the computer. Each save in the console increments the matching counter. displayName repeats the GPO name; depending on the GPO, other lines can appear.
Risks and best practices
- Do not edit it to “force” a GPO: without the same number on the Active Directory side, the console reports mismatched versions. Change the GPO through the console, which increments both.
- If versions diverge after a change, look at DFSR and Active Directory replication between domain controllers before touching the file.
- A
GPT.INIthat a client cannot read (permissions or unreachable SYSVOL) shows up as event 1058 from the Group Policy source in the System log.
Useful commands
# GPT.INI content (example: Default Domain Policy)$guid = '{31B2F340-016D-11D2-945F-00C04FB984F9}'Get-Content "$env:windir\SYSVOL\domain\Policies\$guid\GPT.INI"
# Split the version: low word = computer, high word = user$v = 65537'Computer: {0} User: {1}' -f ($v -band 0xFFFF), ($v -shr 16)
# Active Directory and SYSVOL versions as the console sees themGet-GPO -Guid $guid.Trim('{}') | Select-Object @{n='Computer AD';e={$_.Computer.DSVersion}}, @{n='Computer SYSVOL';e={$_.Computer.SysvolVersion}}, @{n='User AD';e={$_.User.DSVersion}}, @{n='User SYSVOL';e={$_.User.SysvolVersion}}