LarryMillsSr
asked on
Copying data(transferring) from TCHAR sstring[MAX_PATH ] to a CString str?
What is the exact process( show MFC code please) that I should use to transfer(copy) the data from TCHAR sstring[MAX_PATH] to CString str?
I use CStdioFile nerely exclusively and I need my data to be contained in a CString; but RegOpenKeyEx and RegSetValue require TCHAR (I thought CString was already a TCHAR equalevant ).
I use CStdioFile nerely exclusively and I need my data to be contained in a CString; but RegOpenKeyEx and RegSetValue require TCHAR (I thought CString was already a TCHAR equalevant ).
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
sorry s2 is now Hello
ASKER
I tried the cast before I contacted Experts Exchange. It didn't work. Here's a brief description of my problem: The purchased installer sets four Register Keys as shown:
HKEY_LOCAL_MACHINE\Mills Software Solutions Inc\Notify
Company REG_SZ MSS Inc
Name REG_SZ John Doe
Serial REG_SZ 1111122222333334444455555
RegCode REG_SZ AAAAABBBBBCCCCCDDDDD
What I need to do in my program is capture each of these and make a duplicate of them so I can use the data in my Updates( and other stuff). I need that data, because some of that data was entered by the User and I have no other means of retrieving it. How do I do this in MFC? winbase.h and windows.h are included(in a of-handed way in afxwin.h(MFC) but MFC does not allow(or I can't get it to do so) using regular RegOpenKeyEx, RegQueryValueEx, etc. . Note: my program is ANSI not UNICODE.
HKEY_LOCAL_MACHINE\Mills Software Solutions Inc\Notify
Company REG_SZ MSS Inc
Name REG_SZ John Doe
Serial REG_SZ 1111122222333334444455555
RegCode REG_SZ AAAAABBBBBCCCCCDDDDD
What I need to do in my program is capture each of these and make a duplicate of them so I can use the data in my Updates( and other stuff). I need that data, because some of that data was entered by the User and I have no other means of retrieving it. How do I do this in MFC? winbase.h and windows.h are included(in a of-handed way in afxwin.h(MFC) but MFC does not allow(or I can't get it to do so) using regular RegOpenKeyEx, RegQueryValueEx, etc. . Note: my program is ANSI not UNICODE.
ASKER
Should've been:(typo error)
HKEY_LOCAL_MACHINE\Softwar e\Mills Software Solutions Inc\Notify
Note: CWinApp only allows entries in HKEY_CURRENT_USER.
HKEY_LOCAL_MACHINE\Softwar
Note: CWinApp only allows entries in HKEY_CURRENT_USER.
It is really just as direct and easy as AndyAiinscow said.
I guess you are getting errors in your calls to RegOpenKeyEx, RegQueryValueEx, etc. If so, then please provide the error number -- the value returned by the first API function that fails.
I guess you are getting errors in your calls to RegOpenKeyEx, RegQueryValueEx, etc. If so, then please provide the error number -- the value returned by the first API function that fails.
ERROR_INVALID_FUNCTION (2)
A result of 2 is ERROR_FILE_NOT_FOUND
You have misspelled or otherwise incorrectly entered the name of the subkey. The way to solve this is as follows:
Open RegEdit and find the thing you want to see. I'm thinking it will be in:
HKEY_LOCAL_MACHINE
SOFTWARE
MSS Inc
Notify
Below Notify will be the three items you want. If you can't see them, then you are looking in the wrong place, or they have not been set. Once you find the right place, right click Notify and choose "Copy Key Name"
Go to your program and paste it on a blank line:
HKEY_LOCAL_MACHINE\SOFTWAR E\MSS Inc\Notify
Modify it by removing the root key and doubling all backslashes:
SOFTWARE\\MSS Inc\\Notify
Now you can use it in RegOpenKeyEx and it will succeed. See the Attached example, using a key from a common utility program.
-- Dan
You have misspelled or otherwise incorrectly entered the name of the subkey. The way to solve this is as follows:
Open RegEdit and find the thing you want to see. I'm thinking it will be in:
HKEY_LOCAL_MACHINE
SOFTWARE
MSS Inc
Notify
Below Notify will be the three items you want. If you can't see them, then you are looking in the wrong place, or they have not been set. Once you find the right place, right click Notify and choose "Copy Key Name"
Go to your program and paste it on a blank line:
HKEY_LOCAL_MACHINE\SOFTWAR
Modify it by removing the root key and doubling all backslashes:
SOFTWARE\\MSS Inc\\Notify
Now you can use it in RegOpenKeyEx and it will succeed. See the Attached example, using a key from a common utility program.
-- Dan
void CD55Dlg::OnButton1()
{
HKEY hKey;
LONG nResult=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Adobe\\Adobe Acrobat\\7.0\\Installer",
0, KEY_QUERY_VALUE, &hKey);
unsigned char buffer[_MAX_PATH];
unsigned long datatype;
unsigned long bufferlength = sizeof(buffer);
nResult= RegQueryValueEx( hKey, "Path", NULL, &datatype, buffer, &bufferlength );
MessageBox( (char*)buffer, "The value of 'Path' is..." );
}
A guess - you have
"xx\yy\zz" instead of "xx\\yy\\zz" - note the double \ character
"xx\yy\zz" instead of "xx\\yy\\zz" - note the double \ character
ASKER
Question:
After you have the "root Path Key" how exactly do you obtain the four varables data? and at what point do you close the key you've opened == ie, after each valve's data is received or after all value's(4) data is received?
After you have the "root Path Key" how exactly do you obtain the four varables data? and at what point do you close the key you've opened == ie, after each valve's data is received or after all value's(4) data is received?
open key
read value
read value
....
close key
else you attempt to read from a closed key - ERROR
read value
read value
....
close key
else you attempt to read from a closed key - ERROR
>>how exactly do you obtain the four varables data?
Pleasae look at the example that I provided. The value ends up in the variablle named buffer
Pleasae look at the example that I provided. The value ends up in the variablle named buffer