zahmatkesh8519
چهارشنبه 31 خرداد 1391, 13:37 عصر
در رجیستری ولیو ها نوع هایی مختلفی دارند . یکی از این نوع ها REG_BINARY می باشد .
برای دریافت این مقدار از متغییر از نوع CString استفاده می شود .
تکه کد زیر در صورتی که نوع Value این نوع باشد آن را در MessageBox نمایش می دهد .
البته مقدماتی هم دارد که از آوردنش اجتناب کردم .
حالا کاراکتر هایی که نمایش می دهد دارای کاراکتر های اضافی "cd" یا "cdcd" می باشد .
چطور خروجی درست را می توان بدست آورد ؟
نمونه کد :
CString TempCSt;
if (type == REG_BINARY) //get Binary DAta Keys
{
ULONG length=0;
CRegKey key;
SubKeyCString = L"HKEY_USERS\\.DEFAULT\\.A";
if(ERROR_SUCCESS == key.Open(hkeySrcRoot, NULL , KEY_READ))
{
// read the value, length will contain the size after the call
if (ERROR_SUCCESS != key.QueryBinaryValue(&ValueName[0], &ValueData, &length))
{
CString strRet;
for (int i = 0; i < (int) length ; i++)
{
CString str;
//str.Format(L"%c", ValueData[i]);
str= ValueData[i];
//if (str != L"cdcd" )
strRet += str;
}
AfxMessageBox(strRet);
// error occurred
length = 0;
}
}
}
در برنامه های نمایش داده های فایل به صورت HEX یا در هنگام نمایش Value هایی از این نوع داده ها به دو نحود ( در تصویر زیر می بینید ) نمایش داده می شود . اگر درست بگویم سمت راستی رشته و سمت چپی رشته های معادل آن است .
چطور می توان ضمن دستیابی که متن Hex متن معادل CString آن را نیز برست آورد ؟
برای دریافت این مقدار از متغییر از نوع CString استفاده می شود .
تکه کد زیر در صورتی که نوع Value این نوع باشد آن را در MessageBox نمایش می دهد .
البته مقدماتی هم دارد که از آوردنش اجتناب کردم .
حالا کاراکتر هایی که نمایش می دهد دارای کاراکتر های اضافی "cd" یا "cdcd" می باشد .
چطور خروجی درست را می توان بدست آورد ؟
نمونه کد :
CString TempCSt;
if (type == REG_BINARY) //get Binary DAta Keys
{
ULONG length=0;
CRegKey key;
SubKeyCString = L"HKEY_USERS\\.DEFAULT\\.A";
if(ERROR_SUCCESS == key.Open(hkeySrcRoot, NULL , KEY_READ))
{
// read the value, length will contain the size after the call
if (ERROR_SUCCESS != key.QueryBinaryValue(&ValueName[0], &ValueData, &length))
{
CString strRet;
for (int i = 0; i < (int) length ; i++)
{
CString str;
//str.Format(L"%c", ValueData[i]);
str= ValueData[i];
//if (str != L"cdcd" )
strRet += str;
}
AfxMessageBox(strRet);
// error occurred
length = 0;
}
}
}
در برنامه های نمایش داده های فایل به صورت HEX یا در هنگام نمایش Value هایی از این نوع داده ها به دو نحود ( در تصویر زیر می بینید ) نمایش داده می شود . اگر درست بگویم سمت راستی رشته و سمت چپی رشته های معادل آن است .
چطور می توان ضمن دستیابی که متن Hex متن معادل CString آن را نیز برست آورد ؟