Service is running in Local system account (admin mode). Below are the service creation properties.
shSCManager, // SCM database
m_pServiceName, // name of service
m_pServiceName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS |SERVICE_INTERACTIVE_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_CRITICAL, // error control type
szServicePath, // path to service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
Hey weird just solved this problem ! with the help of the really cool tool Process Explorer
Mine was to do with passing events but the same problems occur. It is todo with Security descriptors.
My guess is that you are using CreateNamedPipe
HANDLE WINAPI CreateNamedPipe(
Now my other guess is that your are passing NULL as lpSecurityAttributes. Refering to MSDN
"If lpSecurityAttributes is NULL, the pipe gets a default security descriptor"
You will not that is doesn't say THE default security descriptor. This is because it creates the pipe with the security descriptor for the user that creates it.
This explains your "It works in user mode command-line" but not as a service because the service will be running as SYSTEM.
Pass an empty (DACL) security descriptor which has the behaviour of allowing any user/system process to access your pipe.
Thanks. It works. But since it is a string, while modifying some other edit filed (number) and updatedata(TRUE), the error message "Please enter a number" is displayed. Please let me know a way to avaoid this error / catch this error message.
AfxTextFloatFormat is called by DDX_Text where this message is generated.
I can say another option. Add a member function same as UpdateData(BOOL bSaveAndValidate = TRUE). Remove DDX_Text entry in the DoDataExchange. Convert the window text to double in the new UpdateData if the BOOL bSaveAndValidate is TRUE (if it is NA you can check it also) and do vice versa if FALSE. Also call the CDialog::UpdateData(bSaveAndValidate) so that other control variables will not be affected.
I would like to know wheter there is any way (using code) in which I can get hold of the system log, in terms of, when Windows has finished downloading updates and needs to restart. See the reason I'm asking is because some of our computer are never used by users, but still need security updates, and in the light that after every update Windows needs a restart, there will be no user to do so. Any suggestion ??
The only programmers that are better that C programmers are those who code in 1's and 0's
Am I correct to say that I can locate the event log in the following directory:
Eventhough by default the file for "Application" events comes in the above mentioed path, it can be changed by changing the values in registy. Search the registry for value "C:\Windows\system32\config\AppEvent.Evt"