• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 231
  • Last Modified:

problem withCreateProcess

Hi All
I am having a problem in my application, what I am doing is:
Calling a function SaveKeys(TCHAR *) within a loop and this function save the specified registry key to a .reg file,
for this using CreateProcess( ) for calling regedit.exe from command line and WaitForSingleObject( ) function.
code looks like this

for (int i = 0; i < 10; i++)
{
// some code here
SaveKeys(cRegistryKey ); // for specified Registry Key
}

void MyClass::SaveKeys(TCHAR *cRegistryKey)
{
STARTUPINFO StartupInfo;
PROCESS_INFORMATION ProcessInformation;

CreateProcess(NULL, cCommand,NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE|CREATE_SUSPENDED,NULL, NULL, &StartupInfo, &ProcessInformation);
WaitForSingleObject( ProcessInformation.hProcess, INFINITE );

}
//e.g. Here cCommand = regedit /e C:\File.reg HKEY_CURRENT_USER\MyKey

Now what is my problem is that here WaitForSingleObject( ) function is not working. and only a single reg file is created.
and when use Sleep(1000) then all the 10 reg file are created.

So please tell me that how should I overcome this problem.

Please reply
Thanks
 
0
davinder101
Asked:
davinder101
2 Solutions
 
jkrCommented:
Initialize the STARTUPINFO struct:

   ZeroMemory  (   &StartupInfo,    sizeof  (   STARTUPINFO));

   StartupInfo.cb           =   sizeof  (   STARTUPINFO);
   StartupInfo.dwFlags      =   STARTF_USESHOWWINDOW;
   StartupInfo.wShowWindow  =   SW_SHOWNORMAL;
0
 
AndyAinscowCommented:
I'd write it directly into the registry rather than creating a file on disc then 'running' the file.  (Look at CRegKey in help)
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now