abpframework/abp · critical · Exception
No unique computer ID found for this computer!
Error message
No unique computer ID found for this computer!
What it means
Thrown by DeviceManager.GetBaseBoardSerialNumberForWindows when WMI (Win32_BaseBoard) returns zero serial-number records, so no machine-unique id can be derived. It is a plain System.Exception (not AbpException). It indicates the telemetry/licensing layer could not fingerprint the host.
Source
Thrown at framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/DeviceManager.cs:154
return GetBaseBoardSerialNumberForWindows();
}
catch
{
}
return GetWindowsMachineUniqueId();
}
private static string GetBaseBoardSerialNumberForWindows()
{
using (var managementObjectSearcher =
new System.Management.ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard"))
{
using (var searcherObj = managementObjectSearcher.Get())
{
if (searcherObj.Count == 0)
{
throw new System.Exception("No unique computer ID found for this computer!");
}
var managementObjectEnumerator = searcherObj.GetEnumerator();
managementObjectEnumerator.MoveNext();
return managementObjectEnumerator.Current.GetPropertyValue("SerialNumber").ToString()!;
}
}
}
private static string GetWindowsMachineUniqueId()
{
return RunCommandAndGetOutput("powershell (Get-CimInstance -Class Win32_ComputerSystemProduct).UUID");
}
private static string GetHarddiskSerialForLinux()
{
return RunCommandAndGetOutput(View on GitHub (pinned to 7ed43b1931)
Solutions
- Run on a host where WMI returns a baseboard serial (physical PC, or a VM configured to expose SMBIOS serials).
- Provide the unique id through a different code path that DeviceManager falls back to (it tries several sources before raising this).
- If you control the environment, enable WMI / fix SMBIOS passthrough in the hypervisor.
- Disable or stub the telemetry path that calls GetBaseBoardSerialNumberForWindows when unique-id generation is not required.
Defensive patterns
Strategy: try-catch
Validate before calling
// No pre-call guard; WMI result is unknown until queried. // Validate environment prerequisites instead: static bool IsWmiAvailable() => System.OperatingSystem.IsWindows();
Try / catch
try
{
var id = DeviceManager.GetDeviceId(); // (illustrative)
}
catch (Exception ex) when (ex.Message.Contains("unique computer ID"))
{
logger.LogWarning("No machine id available; running without telemetry id");
id = Environment.MachineName; // fallback only if acceptable
} Prevention
- Do not rely on baseboard-serial fingerprinting in VMs/containers.
- Confirm WMI/SMBIOS is exposed in virtualized hosts.
- If telemetry id is optional, make the code path resilient to its absence.
When it happens
Trigger: Running ABP code that calls into DeviceManager on a Windows host where WMI Win32_BaseBoard query returns an empty collection (no SerialNumber rows).
Common situations: Virtualized/cloud VMs with no baseboard serial exposed to WMI, locked-down corporate machines with WMI disabled, containers, or hardware whose SMBIOS lacks a baseboard serial string.
Related errors
- Cannot determine shell command for this OS! Running on OS: {
- Cannot determine operating system!
- Cannot determine runtime platform!
- Project name cannot be "{illegalProjectName}"! Specify a dif
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/cc60a31d76823d43.
Report an issue: GitHub.