This MSDNの記事では、サブキーを持つレジストリキーを削除する方法を示していますが、コードには欠陥があります。レジストリキーを削除する - MSDNサンプルでエラーが発生する
StringCchCopy (lpEnd, MAX_PATH*2, szName);
言う
ラインはlpEndのバッファを超えてにコピーしようとしているためです例外を引き起こします。私は、ターゲットプラットフォームとのdevのプラットフォームとしてコードをステップすることができませんでしだ次
size_t subKeyLen = lstrlen(lpSubKey);
size_t bufLen = subKeyLen + lstrlen(szName)+1;
LPTSTR buf = new WCHAR[bufLen];
StringCchCopy(buf,bufLen,lpSubKey);
StringCchCopy(buf+subKeyLen,lstrlen(szName)+1,szName);
buf[bufLen-1]='\0';
でその行を置き換えることにより、ソリューションを修正しようとした異なっているが、伐採から、私はコードそれに入れていますそれはちょうどフリーズアップのように見えますが、例外はスローされません。
MSDNの記事が間違っているのは残念です...彼らはチェックされると思います。
これを修正する方法はありますか?
ありがとうございました。
はい、サンプルのバグです。 'StringCchCopy(lpEnd、MAX_PATH * 2 - (lpEnd - lpSubKey)、szName)'でなければなりません。またはこれまでより単純な 'lpEnd = 0; StringCchCat(lpSubKey、MAX_PATH * 2、szName) 'となります。 –