X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=settings.cpp;h=9e5f666025655e97b672f0ecb108fb04166b5c5e;hb=ee9a86c8408feaf173733aea12a80211e5d74483;hp=11984bc1735b1ecdcf6c49f6e321317547cabc25;hpb=71764fe41e37f36bcbc89ac62f664aeda4240790;p=nssm.git diff --git a/settings.cpp b/settings.cpp index 11984bc..9e5f666 100644 --- a/settings.cpp +++ b/settings.cpp @@ -1152,12 +1152,21 @@ int native_dump_objectname(const TCHAR *service_name, void *param, const TCHAR * int ret = native_get_objectname(service_name, param, name, default_value, value, additional); if (ret != 1) return ret; - /* Do we need to dump a dummy password? */ - if (! well_known_username(value->string)) { - /* Parameters are the other way round. */ - value_t inverted; - inverted.string = _T("****"); - return setting_dump_string(service_name, (void *) REG_SZ, name, &inverted, value->string); + /* Properly checking for a virtual account requires the actual service name. */ + if (! _tcsnicmp(NSSM_VIRTUAL_SERVICE_ACCOUNT_DOMAIN, value->string, _tcslen(NSSM_VIRTUAL_SERVICE_ACCOUNT_DOMAIN))) { + TCHAR *name = virtual_account(service_name); + if (! name) return -1; + HeapFree(GetProcessHeap(), 0, value->string); + value->string = name; + } + else { + /* Do we need to dump a dummy password? */ + if (! well_known_username(value->string)) { + /* Parameters are the other way round. */ + value_t inverted; + inverted.string = _T("****"); + return setting_dump_string(service_name, (void *) REG_SZ, name, &inverted, value->string); + } } return setting_dump_string(service_name, (void *) REG_SZ, name, value, 0); }