Agreed about `ERROR_INSTALL_USEREXIT` but it sounds like your description just needs to be codified. If `SE_ERR_ACCESSDENIED` first check `::GetLastError()` and decide from there.