CMM: gocmm-debug probes the startup NRE (part-group match), checks real exe

goCMM matches the registry 'Selected Part Group' against the
ApplicationSettings.xml <PartGroup FullName> entries with a case-sensitive
compare. No match -> SelectedPartGroup null -> "Object reference not set to
an instance of an object" at start. This is a different failure from the
registry SecurityException the script already probes.

- PROBE 3: read the reg value (32-bit view) + every FullName in the XML,
  Ordinal-compare, and report exact / case-only / no-match / missing-XML.
  Case-only and no-match name the d441abd canonicalization fix as the remedy.
- Version check now looks for the real goCMM.exe, not the nonexistent
  GEAOperatorFriendlyInterface.exe (was a false MISSING).
- .bat header documents both failure modes it now diagnoses.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-06-17 08:08:00 -04:00
parent d441abd20f
commit 8e11f0824a
2 changed files with 69 additions and 4 deletions

View File

@@ -4,9 +4,14 @@ REM
REM *** RUN THIS AS THE OPERATOR (the locked-down shop-floor user). ***
REM *** DO NOT right-click "Run as administrator" - that hides the bug. ***
REM
REM Reproduces the goCMM "Requested registry access is not allowed" error and
REM dumps the goCMM registry key's ACL so we can confirm the lockdown stripped
REM the BUILTIN\Users write grant. Output lands in C:\Logs\CMM\.
REM Diagnoses two goCMM failures:
REM 1. "Requested registry access is not allowed" - dumps the goCMM key ACL
REM to confirm lockdown stripped the BUILTIN\Users write grant.
REM 2. "Object reference not set to an instance of an object" at start -
REM PROBE 3 compares the registry 'Selected Part Group' against the
REM ApplicationSettings.xml part groups (case-sensitive) and names the
REM mismatch (host form / \shared vs \SHARED) that nulls SelectedPartGroup.
REM Output lands in C:\Logs\CMM\.
setlocal
set "HERE=%~dp0"