>>107 お待たせです。
結論からゆうとうまくいかないです。
DeleteServiceの後に、以下のような処理をいれてhSCMのロック状態を見てみたんですが、
ロックは外れてるようです。残念。

if (!QueryServiceLockStatus( hSCM, lpqslsBuf, sizeof(QUERY_SERVICE_LOCK_STATUS)+256, &dwBytesNeeded) )
{ MessageBox(NULL, _T("QueryServiceLockStatus"), m_szServiceName, MB_OK);exit(1); }

if (lpqslsBuf->fIsLocked)
{}
else
{}