新增,修改,查看注册表信息 C++,QT

1.注册表 开机自启项,环境变量 地址

如下为本次修改的注册表地址 。

//开机自启项
#define REG_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
//全局环境变量
#define REG_PATH "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"
//用户环境变量
#define REG_USERPATH "HKEY_CURRENT_USER\\Environment"

通过QT修改和查看注册表

首先给出代码

void setAutoStart(const QString path,const QString name,const QString value)
{
    QSettings *settings = new QSettings(path/*REG_RUN*/, QSettings::NativeFormat);
    settings->setValue(name, value);
    delete settings;
}

void getSettingApp(const QString path,const QString name,QString &strvalue)
{
    QSettings *settings = new QSettings(path/*REG_RUN*/, QSettings::NativeFormat);
    strvalue =  settings->value(name,QString("")).toString();

     delete settings;
}

QT自带的Qsetting可直接修改,QSettings::NativeFormat QT给的解释中这样的写的,并且不需要管理员权限:

QSettings::NativeFormat 0
Store the settings using the most appropriate storage format for the platform. On Windows, this means the system registry; on macOS and iOS, this means the CFPreferences API; on Unix, this means textual configuration files in INI format.
使用最适合平台的存储格式存储设置。在Windows上,这意味着系统注册表。在macOS和iOS上,这意味着CFPreferences API;在Unix上,这意味着INI格式的文本配置文件。

通过C修改和查看查看环境变量

getenv(“Path”);//返回环境变量名为 Path的值
注意: getenv获取的变量名在环境变量中没有,程式会卡住,如果不用管理员打开,程式会卡住
使用 _dupenv_s可以防止程式卡死情况,但是两种方式都需要管理员权限才能获取到值,比较鸡肋

 char* buf = nullptr;
    size_t sz = 0;
    if (_dupenv_s(&buf, &sz, "SDT_BASEAOI") == 0 && buf != nullptr)
    {
        printf("SDT_BASEAOI = %s\n", buf);
        free(buf);
    }

setenv 和 putenv都可已修改环境变量的值,但只是在本次程式中有效,就更鸡肋的,所以不多介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值