unity使用Registry类将指定内容写入注册表

news/2024/7/27 15:50:17

遇到一个新需求,在exe执行初期把指定内容写入注册表,Playerprefs固然可以写入,但是小白不知道怎么利用Playerprefs写入DWORD类型的数据,因此使用了Registry类

一. 对注册表中键的访问

注册表中共可分为五类
在这里插入图片描述
一般在操作时,基本使用CurrentUser类

//使用Registry类要using win32的包using Microsoft.Win32;

那么如何将数据写入注册表??

 public static void SetRegistryKey(string valueName, uint value, RegistryValueKind valueKind){//提供对注册表中HKEY_CURRENT_USER键的访问RegistryKey key = Registry.CurrentUser;//打开softwareRegistryKey software = key.OpenSubKey("SOFTWARE", true);RegistryKey softKey = software.OpenSubKey("第一层级", true);if (softKey == null){softKey = software.CreateSubKey("第一层级", true);}RegistryKey versionKey = softKey.OpenSubKey("第二层级", true);if (versionKey == null){versionKey = softKey.CreateSubKey("第二层级", true);}Int32 tempInt = 0; //预先定义一个有符号32位数//unchecked语句块内的转换,不做溢出检查unchecked{tempInt = (Int32)value; //强制转换成有符号32位数}//在项里创建值versionKey.SetValue(valueName, tempInt, valueKind);//最后要关掉versionKey.Close();}
//调用时SetRegistryKey("MARKER", 0xffffffff, RegistryValueKind.DWord);

二. 遇到的问题

这里在写入时遇到两个问题

  1. 写入值为0xffffffff时,会报错
    原因为十六进制的ffffffff数值太大了,若直接setValue必然会报错
    所以上面代码中写到
Int32 tempInt = 0; //预先定义一个有符号32位数
//unchecked语句块内的转换,不做溢出检查
unchecked
{tempInt = (Int32)value; //强制转换成有符号32位数
}
//在项里创建值
versionKey.SetValue(valueName, tempInt, valueKind);

需要先将十六进制的大数通过Int32进行强转,转成有符号的数值,在注册表中会自动补位
2. 注册表内容的写入放在了Awake()方法中
当放在Awake()中时,打出的包无论是否管理员方式运行,均无法插入至注册表
后面放在了Start()中,一下子就写入了
不知道是什么原因,但是若有些相似的问题,大家可以避免下
3. 如果win32包已经导入,但是Registry类依然报错
可以在unity最上方菜单栏File->Build Settings->Player Settings->Other Settings->Api compatibility level改成.Net 4.X
我使用的是unity2018.4.32版本,有点老了
在这里插入图片描述


http://www.mrgr.cn/p/86833585

相关文章

Oracle---windows下安装oracle19c

Oracle---windows下安装oracle19c</div><div class="postText"><div id="cnblogs_post_body" class="blogpost-body blogpost-body-html"> 目录: 一. 官网下载oracle19c 以及客户端 二.安装oracle19c 三.配置 1.配置服务 2.配…

oracle11安装及使用

安装oracle11 官网下载地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官网下载慢可访问我的资源 也可以网盘获取 链接&#xff1a;https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取码&#xff1a;z3na 上传安装包到服务器 在指定目录下创建文件…

常用日期和时间标准对比:HTML, ISO 8601, RFC 3339, RFC 5322

日期和时间,对于不同系统和平台之间的数据交换和互操作至关重要。本文将对比 HTML 标准、ISO 8601、RFC 3339 和 RFC 5322,为读者提供参考。1. HTML, ISO 8601, RFC 3339, RFC 5322 对比 日期和时间,对于不同系统和平台之间的数据交换和互操作至关重要。本文将对比 HTML 标准…

3.1 IO进程线程

使用fwrite、fread将一张随意的bmp图片&#xff0c;修改成德国的国旗 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fp fopen("./2.bmp","r&quo…

[游戏开发][虚幻5]新建项目注意事项

鼠标右键点击Client.uproject文件&#xff0c;可以看到三个比较关键的选项&#xff0c; 启动游戏&#xff0c;生成sln解决方案&#xff0c;切换引擎版本 断点调试 C代码重要步骤 如果你想断点调试C代码&#xff0c;则必须使用使用代码编译启动引擎&#xff0c;你需要做几个操作…

【李宏毅机器学习2021】(四)Self-attention

引入 Self-attention 前面学到的内容输入都是一个向量,假如输入是一排向量,又应如何处理。来看下有什么例子需要将一排向量输入模型:当输入是一排向量时,输出有三种类型:输入和输出的长度一样,每一个向量对应一个 label,如词性标注、音标识别、节点特性(如会不会买某件…

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

【洛谷】闰年

题目描述 很简单,判断给定的年份是不是闰年。 但问题在于我一开始还真不知道闰年的定义..#include<iostream> using namespace std;int main(){int year;cin>>year;if((year%4 == 0 && !(year%100 == 0)) || (year%400 == 0) ){cout<<1;}else{cout&…

综合练习(二)

目录 列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数&#xff0c;以及所在部门的平均工资、最高和最低工资 补充 spool Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金比 SMITH 或 AL…

Python错题集-4:NameError:(变量名错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\1-可视化学习\8.3更改小提琴图的中位数、均值、颜色等.py", line 8, in <module> violin_parts plt.violinplot(data, showmediansTrue, showmeansTrue) …

【计算机网络】数据链路层——差错控制

差错控制(检错) 差错从何而来? 概括来说,传输中的差错都是由于噪声引起的。 全局性 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。 解决办法:提高信噪比来减少或避免干扰。(对传感器下手) 局部性 外界特定的短暂原因所造成的冲击噪声,是产生差错…

vue3使用elementPlus进行table合并处理

elementPlus中table合并部分列 虚拟数据中公司下有多个客户&#xff0c;公司一样的客户&#xff0c;公司列需要合并&#xff0c;客户如果一样也需要合并进行展示&#xff0c;效果展示 const tableData ref([])自定定义自已想要的数据&#xff0c;一般都是通过接口拿到 //table…

top 命令解释

PID:进程ID USER:运行改进程的用户 PR:进程的优先级 NI:Nice值,进程的优先级修正值,负值表示高优先级,正值表示低优先级 VIRT:虚拟内存,进程使用的虚拟内存总量 RES:物理内存,进程实际使用的物理内存总量 SHR:共享内存,进程实际使用的共享内存总量 S:进程状态,包…

【洛谷】数的性质

题目不难,但是很考验读题的能力和运用逻辑符号的能力。 代码: #include<iostream> using namespace std;int main(){int x;cin>>x;bool res[4] = {0,0,0,0};bool a = (x%2 == 0);bool b = (x>4 && x <= 12);if(a && b){res[0] = 1;}if(a |…

【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

Spectrum高速采集存储系统

产品简介: ♦连续(无丢失)数据记录 ♦ 传输度高达3 GByte/s ♦ 一体化系统解决方案 ♦ 从1到32T的数据存储空间 ♦ 单发和多(分段)倍记录模式更多信息请加weixin-pt890111获取 连续(无丢失)数据记录可保证的传输流速高达3GByte/s 一体化系统解决方案 从1到32T的数据存储…

Ubuntu 22.04 遇到的一些软件安装问题记录

1. 截图工具 flameshot 不能正常使用,这是因为对 wayland 支持不好引起的,换成 Xorg,编辑 /etc/gdm3/custom.conf,打开入下选项,保存重启即可。 2. 音乐播放器 clementine 不能正常播放 .wma 文件,报错 Your gstreamer installation is missing a plugin,如下安装一个库…

使用Python对数据进行rsa加密

#!/usr/bin/python3 import base64 import json import jsonpath import requests from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5 from base64 import b64decode, b64encodedef get_public_key():"""备注&#…

瞬态记录仪

产品简介:产品简介: ♦基于以太网 ♦高达120MS/s的采样频率 ♦高达16位分辨率 ♦满量程精度0.03%更多信息请加weixin-pt890111获取 主要特点:数据采集设备系列具备灵巧、紧凑、便携等特点,可以通过以太网来完成远程测试和监控,强大触发功能、海量数据储存能力、多种信号调…

magic chess 最强阵容 (无尽对决 mlbb 魔法战棋)

特点:前期入血很多 所以过度卖血阵容不可取 另外就是所有成三星五费的阵容都是赌,不可取 直接上阵容 拿的指挥官 前3回合卖血攒够20利息,好拿装备,斗士令牌 守护令牌或者战士令牌 连败玩法不太推荐 3星云只能是这三个,主要围绕着这个玩,另外制裁挺重要的 卡着20利息5人口…