RegSetValueEx
-
Hello, I have one command line application, where i am setting registry key values . LPCTSTR lpResName=GetSourceName(RegFileName); rCode=RegSetValueEx( hDckey, lpResName, 0, REG_SZ, (LPBYTE)RegFileName, (DWORD) (lstrlen(RegFileName)+1)*sizeof(TCHAR) ); This RegSetValueEx sets the values in the registry if i run this exe in "Debug" mode setting lpResName correctly, but if i run in the "Release" mode the "Value Name" for hDckey is some garbage. whereas "Value Data" is correctly set in both the Modes. the GetSourceName returns the correct value for lpResName in both modes. what may be the problem with this ? please help me...
-
Hello, I have one command line application, where i am setting registry key values . LPCTSTR lpResName=GetSourceName(RegFileName); rCode=RegSetValueEx( hDckey, lpResName, 0, REG_SZ, (LPBYTE)RegFileName, (DWORD) (lstrlen(RegFileName)+1)*sizeof(TCHAR) ); This RegSetValueEx sets the values in the registry if i run this exe in "Debug" mode setting lpResName correctly, but if i run in the "Release" mode the "Value Name" for hDckey is some garbage. whereas "Value Data" is correctly set in both the Modes. the GetSourceName returns the correct value for lpResName in both modes. what may be the problem with this ? please help me...
If the first argument to
RegSetValueEx()
is garbage, that means the key was not opened correctly.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
If the first argument to
RegSetValueEx()
is garbage, that means the key was not opened correctly.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
not any of the parameters are garbage, after executing this, if i see in the registry the "Value name" is garbage. that too it will set the "Value Name" if i run in "Debug" mode, the problem is there only if i make the exe in "Release" mode.
Yashusid wrote:
not any of the parameters are garbage,
Then why would you state, "the 'Value Name' for hDckey is some garbage?" If none of the arguments being passed to
RegSetValueEx()
contain garbage, then what exactly is the problem? :confused:
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
Yashusid wrote:
not any of the parameters are garbage,
Then why would you state, "the 'Value Name' for hDckey is some garbage?" If none of the arguments being passed to
RegSetValueEx()
contain garbage, then what exactly is the problem? :confused:
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
oops sorry if it created confusion....my intention was to convey that... i have a key...for that key i am setting a property... my registry entry for key when u see in registry Name ------------ Type ----Data (garbage here)--- REG_SZ -- test.xml --> ------Release mode test--------------REG_SZ -- test.xml --> ------Debug mode i am getting garbage in Name field for the key...
-
oops sorry if it created confusion....my intention was to convey that... i have a key...for that key i am setting a property... my registry entry for key when u see in registry Name ------------ Type ----Data (garbage here)--- REG_SZ -- test.xml --> ------Release mode test--------------REG_SZ -- test.xml --> ------Debug mode i am getting garbage in Name field for the key...
Yashusid wrote:
i am getting garbage in Name field for the key...
Which would indicate that
lpResName
is wrong. Try:TCHAR s[128];
_tcscpy(s, GetSourceName(RegFileName));
rCode = RegSetValueEx(hDckey,
s,
0,
REG_SZ,
(LPBYTE) RegFileName,
(DWORD) (_tcslen(RegFileName) + 1) * sizeof(TCHAR));
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
Yashusid wrote:
i am getting garbage in Name field for the key...
Which would indicate that
lpResName
is wrong. Try:TCHAR s[128];
_tcscpy(s, GetSourceName(RegFileName));
rCode = RegSetValueEx(hDckey,
s,
0,
REG_SZ,
(LPBYTE) RegFileName,
(DWORD) (_tcslen(RegFileName) + 1) * sizeof(TCHAR));
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
You are great!!! Thanks a lot!!! It works........ but please help me in understaning why it was setting correctly in "Debug" mode ?
Yashusid wrote:
but please help me in understaning why it was setting correctly in "Debug" mode ?
It's not. You just got lucky. Read here for the differences in the two. You should now be concerned as to what
GetSourceName()
is doing (wrong). If the code is short enough, post it and we can take a look.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
-
Yashusid wrote:
but please help me in understaning why it was setting correctly in "Debug" mode ?
It's not. You just got lucky. Read here for the differences in the two. You should now be concerned as to what
GetSourceName()
is doing (wrong). If the code is short enough, post it and we can take a look.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
In GetSourceName i am parsing a XML file. char *GetSourceName(char *RegFileName) { LPTSTR lpstrMsg; CoInitialize(NULL); CComPtr spXMLDOM; CComPtr spXMLNode; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMElement *pIXMLDOMElement = NULL; HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument)); VARIANT_BOOL bSuccess = false; USES_CONVERSION; _variant_t fileNameValue=T2W(RegFileName); hr = spXMLDOM->load(fileNameValue,&bSuccess); if(!hr) { hr = spXMLDOM->get_documentElement(&pIXMLDOMElement); _variant_t nameValue; if(!hr) { hr = pIXMLDOMElement->getAttribute(CComBSTR(L"source-name"),&nameValue); } if ( nameValue.vt == VT_BSTR ) { USES_CONVERSION; lpstrMsg = W2T(nameValue.bstrVal); } } spXMLDOM.Release(); CoUninitialize(); return lpstrMsg; }
-
In GetSourceName i am parsing a XML file. char *GetSourceName(char *RegFileName) { LPTSTR lpstrMsg; CoInitialize(NULL); CComPtr spXMLDOM; CComPtr spXMLNode; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMElement *pIXMLDOMElement = NULL; HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument)); VARIANT_BOOL bSuccess = false; USES_CONVERSION; _variant_t fileNameValue=T2W(RegFileName); hr = spXMLDOM->load(fileNameValue,&bSuccess); if(!hr) { hr = spXMLDOM->get_documentElement(&pIXMLDOMElement); _variant_t nameValue; if(!hr) { hr = pIXMLDOMElement->getAttribute(CComBSTR(L"source-name"),&nameValue); } if ( nameValue.vt == VT_BSTR ) { USES_CONVERSION; lpstrMsg = W2T(nameValue.bstrVal); } } spXMLDOM.Release(); CoUninitialize(); return lpstrMsg; }
The memory that
lpstrMsg
points to is no longer valid whenGetSourceName()
goes out of scope. Return aCString
orstring
object instead. Or you could leave it as is, and make the appropriate change to all places that useGetSourceName()
.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne