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

  1. Run on a host where WMI returns a baseboard serial (physical PC, or a VM configured to expose SMBIOS serials).
  2. Provide the unique id through a different code path that DeviceManager falls back to (it tries several sources before raising this).
  3. If you control the environment, enable WMI / fix SMBIOS passthrough in the hypervisor.
  4. 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

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


AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13). Data as JSON: /api/errors/cc60a31d76823d43. Report an issue: GitHub.