問題

これは私の割り当ての一部です。レジストリキーを開いたり読んだりして値を作成する方法を知っていますが、いくつか質問があります。私のコード:

これは私がレジストリに新しい文字列値を書き込む方法です:

 void lCreateKeyOne(HKEY hKey, LPCWSTR lSubKey)
{
WCHAR wcValue[] = TEXT"testvalue";
LONG lNewValue = RegSetValueEx (hKey, 
                                L"MytoolsTestKey", 
                                NULL, 
                                REG_SZ,
                                (LPBYTE)wcValue,                    
                                sizeof(wcValue));
}
 

それは動作しますが、私はランダムな文字列を生成し、レジストリキーに書きたいと思います。 これは私がランダムな文字列を生成する方法です:

 static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";

int stringLength = sizeof(alphanum) - 1;

char genRandom()
{
return alphanum[rand() % stringLength];
}
srand(time(0));
string Str;
for (unsigned int i = 0; i < 20; ++i)
{
   Str += genRandom();
}
 
  1. レジストリキーとして書き込むには?
  2. 文字列StrをWCHAR wcValue []に変換するには?
  3. 私はwcharの代わりにcharを使用しようとしましたが、それは中国語の文字を書きます https://docs.microsoft.com/en-us/windows/desktop/api/winreg/nf-winreg-regsetvalueexa

  ベストアンサー

 static wchar_t const * const alphanum{
    L"0123456789"
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     "abcdefghijklmnopqrstuvwxyz" };

constexpr auto stringLength{ wcslen(alphanum) };

wchar_t genRandom()
{
    return alphanum[std::rand() % stringLength];
}

// ...
std::srand(static_cast<unsigned>(std::time(nullptr)));

std::wstring Str;
for (std::size_t i{}; i < 20; ++i){
   Str += genRandom();
}
 

  同じタグがついた質問を見る

c++winapi