RegSetValueEx 不会创建字符串值
RegSetValueEx doesn't create a String Value
我读了一些文档并查看了代码示例,但找不到任何代码不工作的原因。
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
void AddSubKeyWithValue(HKEY hRootKey, LPWSTR strSubKey, LPCTSTR StringVal, LPCTSTR data)
{
HKEY hKey;
RegOpenKeyEx(hRootKey, strSubKey, NULL, KEY_ALL_ACCESS, &hKey);
RegSetValueEx(hRootKey, StringVal, NULL, REG_SZ, (LPBYTE)&data, sizeof(REG_SZ));
RegCloseKey(hKey);
return;
}
void main() {
AddSubKeyWithValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",L"Slayer Tool", L"c:\Slayer\Update.exe");
system("pause");
return;
}
REGSETVALUEEX调用全部关闭。第一个参数应该是subkey手柄,而不是hkey_local_machine。第五参数应指向数据,而不是指向数据指针。第六参数应包含字符串长度,以字节为单位(请记住是一个宽字符串),包括终止null。
如此重新这样的:
RegSetValueEx(hKey, StringVal, NULL, REG_SZ, (LPBYTE)data, sizeof(wchar_t)*(wcslen(data)+1));
最重要的是,HKEY_LOCAL_MACHINE仅适用于非Admin用户,即使对于Admin用户,它也无需阅读而没有特权高程。
另外,system("pause")
是等待键按下的糟糕方法。改用" getch()"。
相关文章:
- 从std::字符串创建OssBitString
- 如何从字符串创建lua表?
- 如何使用循环从另一个字符串创建一个没有空格的新字符串
- 如何从字符串创建一个web::uri以放入client.connect()
- 如何从字符串创建固定的QDateTime
- 用C 的字符串创建一系列字符串
- 正在尝试为c字符串创建一个Text Line类
- 如何使用字符串创建条件
- 优化字符串创建
- C++:使用子字符串创建新字符串
- 从字符串创建对象 (C++)
- 通过本机字符串创建 BSTR(使用_bstr_t包装器)时,如何设置长度
- 基于另一个字符串创建一个由空格 (_) 和空格组成的字符串
- 有没有更好的方法从字符串创建目录?CPP,创建目录,字符串流,字符串
- 在 c++ 中从字符串创建类以避免大型 switch 语句
- 从字符串C++创建控制台标题
- C++:从字符串创建参数化指针
- 在C++中为字符串创建自定义函数
- 如何为字符串创建要起作用的unordered_map
- 如何从二进制字符串创建一个bitset