std::string s = fs::temp_directory_path().append(filename).string(); LPCBYTE str = reinterpret_cast<LPCBYTE>(s.c_str()),
RegSetValueExA的实战示例:
// using std::string... HKEY newValue; // don't use RegOpenKey()! It is provided only for backwards compatibility with 16bit apps... if (RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &newValue) == 0) { // this may lose data for non-ASCII characters! std::string s = fs::temp_directory_path().append(filename).string(); // this will convert the ANSI string to Unicode for you... RegSetValueExA(newValue, "myprogram", 0, REG_SZ, reinterpret_cast<LPCBYTE>(s.c_str()), s.size()+1); RegCloseKey(newValue); } return 0; // using std::wstring... HKEY newValue; // don't use RegOpenKey()! It is provided only for backwards compatibility with 16bit apps... if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &newValue) == 0) { // no data loss here! std::wstring s = fs::temp_directory_path().append(filename).wstring(); // no ANSI->Unicode conversion is performed here... RegSetValueExW(newValue, L"myprogram", 0, REG_SZ, reinterpret_cast<LPCBYTE>(s.c_str()), (s.size()+1) * sizeof(WCHAR)); RegCloseKey(newValue); } return 0;