On our blog we have already bring information about the installation, configuration and activation of Microsoft products (MS Office and Windows) using Key Management Service (KMS). Today we will take a look at the concept of KMS activation counter, consider how to count the number of client activations and ways to manually increase the KMS activation request count.
Understanding KMS activation
Let’s return first to the theoretical basics of the KMS volume activation. A large overview of the Microsoft KMS Licensing is described in details in the article KMS Activation FAQ.
According to the Microsoft Volume License program, the minimal amount of licenses in one package is 25. Each Volume License customer gets a special CSVLK key (or KMS host key) which is used to activate an internal corporate KMS server. Internal clients (both Windows and MS Office) can be activated on this server with the help of KMS server, without having to contact Microsoft’s activation servers over the Internet.
Activation error 0xC004F038: The count reported by your KMS is insufficient
However, right after the installation and activation, the KMS server will not activate the clients that contacted it. If you try to activate your OS (Windows 7 Pro, in this example) on a new KMS, you receive an error:
0xc004f038: The Software Licensing Service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient. Please contact your system administrator.
The matter is that the KMS server has a so-called activation count (kms counter) which value is incremented after each activation request is received from a network client. When accessed, the KMS server assigns a unique identifier CMID (client machine identification) to each client and puts it into local database (cache). In this case, the OS of the computer from which the request was received is not activated immediately. These activation requests are accumulated in the internal KMS cache on the server. This occurs until a certain minimum threshold of activation requests received within the last 30 days has been overcome in the KMS database. This threshold is 5 activation requests from the server OSs and 25 activation requests from the desktop Windows OSs (the activation thresholds for desktop/server OSs are independent, i. e. if the value of the KMS count has exceeded 25 activation requests from client OSs, this server will not activate server OSs until the number of activation requests from these platform reaches 5). If the client does not contact the KMS activation server during 30 days, it is automatically removed from the KMS database, and the KMS activation counter is reduced by one.
You can get the CMID value on a particular computer using the following command:
Get-WmiObject -class SoftwareLicensingService -ComputerName salarypc121 | Select-object ClientMachineID
You can reset the current CMID by running sysprep or using the command:
slmgr /rearm
(need a reboot).
At any time, the total number of activation requests received by the KMS server can be viewed using the command:
slmgr /dli
In this example, the KMS counter value (Current count) on the KMS server is 50.
To get the exact value of the counter, run the following command on the KMS server:
cscript slmgr.vbs /dlv 98ebfe73-2084-4c97-932c-c0cd1643bea7
Key Management Service cumulative requests received from clients
Total requests received: 2599
This means that this KMS server received 2599 activation requests from clients.
KMS client activation period is 180 days, and every 7 days (7 days is set by default, it can be changed with the command slmgr.vbs /sri) the client tries to renew the activation (for the next 180 days). If within 180 days the client did not renew the activation, the KMS server removes the client’s CMID from the database and reduces activation counter. The client’s OS still activated within 180 days. The client that hasn’t renewed its activation on the KMS server during 180 days, it goes into the grace period mode.
In case if you try to activate the client OS on the KMS server and the count doesn’t increase, it can be caused by the following reasons:
- Duplicating CMID (usually it takes place when cloning an OS);
- More than one KMS server in the network. By default, clients can automatically find the KMS server in the domain using a special DNS record – srv _vlmcs._tcp (you can get the name of the server using command:
nslookup -type=srv _vlmcs._tcp
). You can manually specify the KMS server name as follows:slmgr /skms kms_server.woshub.com:1688
); - Invalid key specified on the client. For example, instead of an public GVLK (Generic Volume License Key), MAK / retail key is specified, or a key not corresponding to the operating system.
Script to Increase KMS Server Current Count
In some cases even if a VLC has been purchased, it is difficult to find immediately necessary number of clients to overcome the activation threshold of the KMS server (the problem is particularly relevant for small or isolated networks). When the client is trying to activate on the server in this case, an error 0xC004F038 appears.
In this case an administrator starts thinking about manually increasing the KMS activation counter. However, it’s not so simple… Neither sysprep, nor a change of the MAC address for a network card help you to cheat the KMS server. As a quite popular variant, it is suggested to create the missing number of virtual machines and activate them on the KMS server (virtual machines have to be unique). However, this method is quite time consuming and requires keeping all these machines functional (or their re-deploying or turning on every180 days).
As an easier alternative, we recommend you to use the following cmd script that allows to increase the activations count on the KMS server. Install the necessary version of the OS (in this example, it is Windows 7 Professional), create a directory and copy the following BAT file into it. In the same folder create two empty files named:
7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0
7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0
Run increase_kms_count.bat:
@echo off
set skms=kms_server.woshub.com
for %%i in (. . . . . . . . . . . . . . . . . . . . . . . . . .) do call :Act %skms%
slmgr /ato
sc stop sppsvc
goto :end
:Act
sc stop sppsvc
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
sc start sppsvc
cscript.exe "%systemroot%\system32\slmgr.vbs" /skms %1
ping 127.0.0.1 -n 5 > nul
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato
sc stop sppsvc
:end
The number of dots in the line 3 is the required number of requests to the KMS server (in this example, we simulate the access of 25 unique clients)
In the script, a 5 second delay is added; in some cases, the system returned that the files are busy, and the activation attempt was not counted.
After the script is executed, check the KMS count:
slmgr /dli
The value of the Current count should increase by 25. After that the KMS server will activate all the desktop systems accessing it (whether Windows 7, 8 or Windows 10). Later this script (if there is not enough real clients) should be run every 30 days, since the activation count will reduce if there wouldn’t be activation requests to the server.
How to increase the activation count using VM snapshots
If the above script did not help you to increase the activation count on the KMS server, you can increase the counter value by using virtual machine snapshot technology in Hyper-V / VMWare. The algorithm is as follows:
- Create a new VM with Windows 10 (do not activate it and do not enter GVLK key, it’s best to temporarily disconnect it from the network);
- Create the following 2 scripts on the VM desktop, one of which resets the CMID and changes hostname. The second performs the OS activation.Rearm.bat
start “cmd /c slmgr /rearm" timeout /t 15 /nobreak > NUL
wmic computersystem where name="%COMPUTERNAME%" call rename name="vmpc-%random%"
shutdown /r /t 0 kms_activate.bat
set skms= kms_server.woshub.com
sc start sppsvc
script.exe "%systemroot%\system32\slmgr.vbs" /skms %1
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato - Put the kms_activate.bat script into Windows startup;
- Create a snapshot of the virtual machine;
- Run the Rearm.bat script with administrator privilegies. The virtual machine will reboot and activate on the KMS server;
- Rollback the VM to the previous state;
- Follow steps 5, 6 as many times as the number of activation requests you want to add on the KMS server.
41 comments
This script does not increase the Current Count on Windows 8.1. Looking in the KMS Logs, it still reports the same CMID so KMS does not increase the count.
John.. just a guess here. But the script above includes the Client KMS key for Windows 7 Pro. This is not the same as the key for Windows 8.1. You’ll need to change the key where it says “cscript.exe “%systemroot%\system32\slmgr.vbs” /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4″
To a key for your version of 8.1 – One of these:
Windows 8.1 Professional
GCRJD-8NW9H-F2CDX-CCM8D-9D6T9
Windows 8.1 Professional N
HMCNV-VVBFX-7HMBH-CTY9B-B4FXY
Windows 8.1 Enterprise
MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
Windows 8.1 Enterprise N
TT4HM-HN7YT-62K67-RGRQJ-JFFXW
This didn’t work for me.. I’m trying to activate Windows 7 Professional. I changed the name of the KMS server to the correct one, made the folder and put the script file and the two empty files in it. I’m still seeing duplicate CMIDs. Does it no longer work?
Thank you so much. The issue shown with the low count for slmgr –dlv was exactly what I was having trouble with. Once this batch pushed it to 25 we were good to go! Thanks a ton!
[…] https://woshub.com/how-to-increase-kms-server-current-count/ […]
Can anybody explain the significance of the two empty files? What is their role in this process?
If I were to change the client key to something other than Win7Pro would I need to change those file names? How did the author determine the names of those files?
Cheers and thank you very much for this information. It has been extremely useful in my test lab.
These files are the part of the Windows activation subsystem, first appeared in Windows Vista.
They point out that system is activated on KMS server. You can change client key on any corresponding to your system
Thanks! This worked well on increasing our KMS Counts for Windows 7 Enterprise.
But is there a similar script for for activating Office 2010 as well?
Thanks, worked a treat. Some comments: Downloaded script was one long command and needed line adjustment. Didn’t reduce the number of dots so it took my count from 23 to 49 (after its last self activation). A warning about an unauthorised alteration of Windows popped up and had to be clicked during each loop.
First, thanks for the script. I had to modify it a bit. I also got the warning as Tom did, but you can ignore it until the script has finished.
Perfect! I had to shut off UAC to get it to run. Thanks!
Trying to get this to ingress the count on Windows 10. Not sure what Key to use.
Thanks for this write-up and especially the script, its very timely for me and worked like a charm once i edit the line with product key with Windows 10. I like old threads with high order in searches like this one with a solution that works and not a question without an answer to it.
Cheers!
Hi, I’ve installed a Win 2012 R2 with the “Windows Srv 2012R2 Standard KMS for Windows 10” key. The current count is 15 and it’s not increasing. I cannot activate Windows 10 clients, they give me the error 0xC004F038. I tried to use the script but it’s not working for me. Should I run it directly in the KMS server? Which key should I put into the .bat? Thanks!
How the empty files are created?
Watch out for formatting issues. insert a pause after the various commands so you can see where the batch is breaking down at if you are not successful. If you aren’t getting the warning that you have to click close on, then its erroring out some place. How to enter a pause? create a blank line and type in pause.
Use the client keys from here: https://technet.microsoft.com/library/jj612867.aspx
If you want to run up windows 10, run the batch file from a windows 10 device. You need to run it from the device that needs activation.
Run the batch file as administrator. IE, right click, run as administrator.
Thank you very much for that script.
That saved my week !
Cheers
Are you running this on the KMS Server or just any client?
This absolutely does not work!
Activation is done based on the CMID as stated. This script does nothing to change the machine’s CMID. This script is doing nothing more than re-requesting activation for the same machine each time. You will see an increase in the number of requests, but not the “Current count” which is the number of unique machines that requested a license.
The only way to activate 25 machines is to spin up unique VM’s that have been syspreped, which generates a new CMID, or supposedly doing an slmgr /rearm, which requires a reboot each time (untested but recommended by VMWare).
Are you sure you are SysAdmin to post a reply like that? Have you at least tested this solution?
It works like a charm! For your information, if you stop SPPSVC service and if you replace original files “7B29… … …05A0” with empty files then CMID is removed when SPPSVC restart.
New CMID is generated when you start command slmgr.vbs /ato.
If you have a number of computers on the domain and the KMS server is registered in the DNS you can generate a lot of requests by asking each of these to re-activate.
dsquery computer -limit 1000 -o RDN > serverlist.txt
[ edit serverlist.txt to remove double-quotes ]
for /f %a in (serverlist.txt) do cmd.exe /c slmgr %a /ato
I was able to quickly generate enough requests to bring KMS online.
Getting windows script host error?
Can this method be used to activate Office 2016 in a KMS environment?
We’re trying to activate a client on Office 2016 and getting the same “kms server count” error.
No, this script is only suitable for increasing KMS counter for the Windows desktop OS license.
For Office 2016, I have no such a script. Probably in your case the easiest way is to create a few additional VMs with Office.
Does anyone have this working with Win 10 when using Server 2019 for KMS? even when I generate a new CMID (slmgr /rearm > reboot) for my client and activate against the KMS host the KMS current count doesn’t increase.
Something must have changed? The two files “7B29… … …05A0” don’t actually change the client CMID… if this was the process on Win 7 it has subsequently changed.
I haven’t tested this script with KMS on Windows Server 2019 yet. What key do you use as an argument slmgr.vbs / ipk?
What Windows 10 edition (build) is used?
I am testing with Win 10 Enterprise LTSC. I use the keys indicated in https://docs.microsoft.com/en-us/windows-server/get-started/kmsclientkeys : M7XTQ-FN8P6-TTKYV-9D4CC-J462D. I have also tested using a Windows 10 Enterprise 1803 build using NPPR9-FWDCX-D2C8J-H872K-2YT43.
I can see the event logs on the KMS server (Applications and Services Logs > Key Management Service) showing that the server is processing the activation request but the CMID is the same on every request and therefore the count is not increasing. It isn’t actually changing via the script. Removing and replacing the two files in the C:\Windows\System32\ is having no bearing on the CMID. The only way I can change the CMID is by issuing the slmgr.vbs /rearm command and rebooting the system.
I suspect there have been some fundamental changes under the covers re. KMS from Win 7 to Win 10.
Have now tested activating a Windows 7 Professional client against a Windows Server 2019 KMS host and can confirm the above script works fine. The KMS count increases on the KMS host as expected. The two files “7B29… … …05A0” are not used in Windows 10 KMS activation (at least not Win 10 Enterprise 1803 / LTSC) so the script doesn’t work… perhaps the intention with Win 10 is not to use KMS (depreciated) but to use Active Directory for activation.
I agree, the script is not working with Windows 10. I am using Windows 10 Enterprise Build 1809. The two files “7B29… … …05A0” are not used with Windows 10 KMS activation. Is there another possibility to get the script working with Windows 10 … yes i changed the script to the correct kms client key ;).
I found the kmsclient.exe,but i would never use this tool. For me it is clear that is malicious software.
Has anyone gotten it to work with Server 2012R2 as KMS, Windows 10 Pro as client, unactivated? Running the script un the unactivated Win 10 client doesn´t increase the count.
Have you updated your KMS server on WS2012R2 to activate Windows 10? https://woshub.com/kms-server-update-to-support-windows-10-activation/
For those of you that are needing this in 2019, it does not work with Windows 10 even if you change the license key to a proper Windows 10 Enterprise KMS key. I couldn’t find any other scripts or solution to do this so I found a workaround that is much easier than setting up 25 VMs or using the repetitive VM snapshot technique. All you have to do is set up a Windows 7 Enterprise VM and put the script on the machine to auto-start and then all that is needed is to fire up the VM every once in a while when count is expiring or have it start on a schedule. I needing this, not because I did not have the minimum number of clients to activate (we have enough) but because our situation is that we have a good 10-15 laptops that are not always used and rarely are connected so it would have created work to have to get them out and set them up every once in a while so that their activation count doesn’t expire from the KMS Host.
Thanks for the elegant and simple solution with Windows 7 VM to increase the KMS counter using the old script 🙂
How can I apply this solution for office 2016 / office 2019? Can you please advice?
This works only for WIndows OS, not for MS Office. It’s easier for you to install 25 copies of Office on virtual or physical computers to get enough count of KMS activation requests.
क्या हम एक ही मशीन पीर केएमएस काउंट बड़ा सकते है
We have set up a new KMS 2019 and a lot of 2008. Now, most of the servers are asking to reactivate? How to increase the count?
Just create 5 VMs with Windows Server 2019 and activate them on your KMS host.
For Windows 10 LTSC 2021 & KMS Srv2019, the VM snapshot route was helpful but the described steps aren’t as clear as they could be so I thought to share some simplified steps (in case there are errors, you are more likely to catch, which in the long run WILL save you time).
1. Setup your Win10 VM
2. Prepare 4 scripts on the desktop with the commands as recommended
– script_1_1.bat (rearm command)
– script_1_2.bat (rename command)
– script_1_3.bat (shutdown reboot)
– script_2.bat (slmgr commands to activate)
3. Take a VM snapshot. This is your point of restoration
4. Run as admin scripts 1_1, 1_2, and then 1_3 to reboot.
5. Log into the rebooted VM and run as admin script 2.
6. Check your KMS server, run slmgr /dlv to confirm counter goes up by 1
7. Revert VM snapshot, repeat steps 4, 5, 6 until you reach a counter value of at least 25
I wonder if the problem with activating Windows versions other than Windows 7 might be the names of the two empty files. I did a search and found a reference to a similar file in Windows Vista, but it had a different filename:
“7B296FB0-376B-497e-B012-9C450E1B7327-2P-0.C7483456-A289-439d-8115-601632D005A0”
and
“7B296FB0-376B-497e-B012-9C450E1B7327-2P-1.C7483456-A289-439d-8115-601632D005A0”
are Windows system files that were first used in Vista.
My speculation is that each Windows OS version has a different filename which identifies the version of Windows requesting activation. I’m not sure, however, how to find out the correct filename for each Windows OS version.
In my case, I modified the script above to activate Server 2019, and it’s working – except that the activation request count is increasing, but the “Current count” is not. The Server 2019 OS is not activating, and I believe what is happening is the KMS server is understanding each request to be coming from a Windows 7 OS, even though the script contains the correct Server 2019 GVLK key and is being run on a Server 2019 machine.
Does anybody have any insight into the correct GUID-looking filename(s) that corresponds to each Windows OS version? I have a hunch that if we could find this out, we could arm everyone with the information needed to solve their particular problem (for Windows OSs only – I’m not going to attempt to activate Office like this).
An input or additional insight welcome!
I’ve used this a few times. So here are my notes for myself next I come to use it :).
When you copy and paste the script, overwrite the quotation marks with plain text ones ( ” ).
Insert the Generic Volume License Key to match the version of windows you are using.
Run the bat file from an elevated command prompt.