Deploy the Desktop Agent via Microsoft Intune (Windows)
Package the ZeusLock desktop agent MSI as an Intune Win32 app, push it to a device group, and deliver its ServerUrl and LicenseKey configuration through an Intune registry policy or a ProgramData JSON file.
Microsoft Intune can install the ZeusLock desktop agent on managed Windows devices and hand it the configuration it needs to bind to your organization. The installer you download is generic — it carries no credentials. An endpoint only becomes an org-bound ZeusLock agent once you deliver its configuration (ServerUrl and LicenseKey) separately, which is the second half of this guide.
Before you begin
- Windows devices enrolled in Intune (Microsoft Entra joined or hybrid joined).
- The Microsoft Win32 Content Prep Tool (
IntuneWinAppUtil.exe) to build the.intunewinpackage. - The generic agent installer, downloaded from the ZeusLock dashboard under Agents → Deployment. Rename it
ZeusLock.msi. - Your tenant API URL for
ServerUrl(e.g.https://api.zeuslock.ai) and your org API key forLicenseKey(azl_...value from Settings → API Keys).
What blocks versus what only alerts is your policy, which lives in the dashboard and is fetched using the LicenseKey. You never configure policy on the endpoint. Note also that the agent runs in the signed-in user's interactive desktop session — a tray app plus a local inspection proxy on 127.0.0.1:9876 — so it cannot protect a machine with nobody logged in.
Step 1 — Wrap the MSI as a Win32 app
Place ZeusLock.msi in an otherwise empty source folder and run the content prep tool to produce the .intunewin package.
IntuneWinAppUtil.exe -c C:\ZeusLock\source -s ZeusLock.msi -o C:\ZeusLock\output
Step 2 — Create the Win32 app in Intune
In the Intune admin center go to Apps → Windows → Add and choose Windows app (Win32). Upload the ZeusLock.intunewin file, then set the commands. The MSI is a per-user package, so force a per-machine install:
- Install command:
msiexec /i ZeusLock.msi /qn ALLUSERS=1 MSIINSTALLPERUSER="" - Uninstall command:
msiexec /x ZeusLock.msi /qn - Install behavior: System
For the detection rule, use the MSI product code (Intune usually pre-fills it from the package) or a registry/file check on the installed agent.
Step 3 — Assign to a device group
On the Assignments tab, add your Windows device group to Required. Because the agent needs an interactive session to run, target devices whose users actually sign in. Intune installs the app on the next check-in.
Step 4 — Deliver the configuration
Installing the MSI does not bind the endpoint. Deliver the configuration with one of the two options below.
Option A — Registry policy (recommended). Write the values under HKLM\SOFTWARE\Policies\ZeusLock. You can create these with an Intune Settings-catalog / custom OMA-URI policy, or with a PowerShell platform script (Devices → Scripts and remediations) run in the system context:
$key = 'HKLM:\SOFTWARE\Policies\ZeusLock'
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name ServerUrl -Value 'https://api.zeuslock.ai' -PropertyType String -Force | Out-Null
New-ItemProperty -Path $key -Name LicenseKey -Value 'zl_xxxxxxxxxxxxxxxx' -PropertyType String -Force | Out-Null
# Optional toggles
New-ItemProperty -Path $key -Name AgentEnabled -Value 1 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $key -Name BlockingEnabled -Value 1 -PropertyType DWord -Force | Out-Null
ServerUrl and LicenseKey are REG_SZ; AgentEnabled and BlockingEnabled are REG_DWORD set to 1.
Option B — ProgramData JSON. Deploy a JSON file to C:\ProgramData\ZeusLockDLP\config.json with a PowerShell platform script. It must be UTF-8 with no BOM:
$dir = 'C:\ProgramData\ZeusLockDLP'
New-Item -Path $dir -ItemType Directory -Force | Out-Null
$cfg = '{"ServerUrl":"https://api.zeuslock.ai","LicenseKey":"zl_xxxxxxxxxxxxxxxx"}'
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText("$dir\config.json", $cfg, $utf8NoBom)
{
"ServerUrl": "https://api.zeuslock.ai",
"LicenseKey": "zl_xxxxxxxxxxxxxxxx"
}
Use the keys ServerUrl and LicenseKey exactly. In JSON files apiUrl and apiKey are accepted as legacy aliases, but prefer ServerUrl and LicenseKey. Never use api_url, api_key, or any monitor_* key — the agent ignores them.
Step 5 — Verify
On a target device, confirm the configuration and the install, then run a live test:
reg query "HKLM\SOFTWARE\Policies\ZeusLock"
Get-Package *Zeus*
- Confirm
ServerUrlandLicenseKeyappear (or thatconfig.jsonexists). - Confirm the ZeusLock tray app is running in the signed-in user's session.
- Paste a test credit-card number into
chatgpt.comand confirm an incident appears in the dashboard.
For the full step-by-step walkthrough with ready-made scripts and templates, see https://github.com/Zeuslock-ORG/zeuslock-agent-deployment.