Hi folks!
On Vista, I can't seem to have my C++ program add a new user that is usable
for a service, starting the service fails with ERROR_BAD_USER_PROFILE
Here's how I do it:
- Add the user, same code as shown in this place:
http://support.microsoft.com/kb/196070
i.E.: adduser.exe MyServiceUser MyServicePassword
(After this, the profile dir appears in C:\Users\MyServiceUser)
- Give the user the SeServiceLogonRight privilege
(I have verified that this works using the management console)
- Register the service:
CreateService(mgr, // SCManager database
"MyService", // name of service
"Sample Service", // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
path, // path to service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
".\\MyServiceUser", // Local system account
"MyServicePassword"); // no password
- Try to start the service: net start MyService
XP: Works
Vista: Fails with 1253: ERROR_BAD_USER_PROFILE
Now if I logon this user once manually at the welcome screen
(which needs some fiddling in the user management console to allow this),
the service can be started.
Thus I conclude there's something missing beyond calling LoadUserProfile(),
but what is it?
Thanks in advance!