C#获取已安装软件列表
最近项目需要判断目标电脑是否安装了对应环境,故需要获取系统上已安装的软件列表。查找一番,写下本篇文章备忘。
参考链接:
Registry 类
RegistryKey 类
RegistryView 枚举
Registry
提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。
字段
| ClassesRoot | 定义文档的类型(或类)以及与那些类型关联的属性。 该字段读取 Windows 注册表基项 HKEY_CLASSES_ROOT。 |
| CurrentConfig | 包含有关非用户特定的硬件的配置信息。 该字段读取 Windows 注册表基项 HKEY_CURRENT_CONFIG。 |
| CurrentUser | 包含有关当前用户首选项的信息。 此字段读取 Windows 注册表基项 HKEY_CURRENT_USER。 |
| LocalMachine | 包含本地计算机的配置数据。 该字段读取 Windows 注册表基项 HKEY_LOCAL_MACHINE。 |
| PerformanceData | 包含软件组件的性能信息。 该字段读取 Windows 注册表基项 HKEY_PERFORMANCE_DATA。 |
| Users | 包含有关默认用户配置的信息。 该字段读取 Windows 注册表基项 HKEY_USERS。 |
树莓派使用CUPS搭建局域网打印机(二)
之前文章( 树莓派 + HP LaserJet CP1025 网络打印服务器方案 )提到过树莓派通过安装CUPS配置局域网共享打印机,但是对于CP1025这款打印机,当时的方案并不理想,存在官方驱动打印色彩偏差过大,发送打印机任务后打印机响应缓慢,http打印机虽然打印速度快,但是打印时没有任务队列等问题。经过一段时间总结经验,整理了一下几种方案。
STM32F103串口设置7bit数据位2bit停止位
Winodows11改欧盟地区卸载Edge浏览器
得益于欧盟的数字市场法案,windows11设备设置区域属于欧盟地区系统允许小组件以默认浏览器启动,同时允许用户卸载自带的edge浏览器。全新安装的windows11,直接选择欧盟区域即可。而对于已经安装好的windows11,需要重新触发OOBE,再选择欧盟区域。
本文讲述的是已经使用一段时间的windows系统利用系统自带的sysprep.exe触发OOBE修改设备设置区域
按下 “Windows + R” 打开运行窗口,输入 “%WINDIR%\system32\sysprep\sysprep.exe”
系统清理操作选择“进入系统全新体验(OOBE)”,不用勾选“通用”,关机选项选择“重新启动”,点击确定按钮。
电脑会重启,然后进入到OOBE界面。区域选择欧盟区域的国家。
用户账户页面通过”Shift + F10” 打开命令提示符,输入”start ms-cxh:localonly”,创建一个本地账户(该账户后面可删)
其它根据自己喜好,正常完成配置,进入桌面。
退出刚才创建的账户,登录原来的主账户。进入 设置——账户——其它账户,可以将第4步创建的账户删除。
根据自己喜好,配置 设置——时间和语言内的”语言和区域”与”日期和时间”
至此,edge浏览器已经可以删除,桌面小组件将以默认的浏览器被打开。
STM32F407标准库下SPI-Slave-DMA收发
stm32f407对外高速传输的方法有usb、spi。但是usb通讯需要软件实现usb协议栈,太耗费计算资源了。而SPI是一个功能完整的硬件外设,使用DMA进行收发基本不占用cpu计算资源。
FT4222H是一款采用紧凑型32引脚QFN封装的高速/全速USB2.0至四路SPI/I2C器件控制器。四线SPI模式下传输速率高达53.8Mbps
f407虽然不支持4线spi,但是和ft4222h组合,最大40MHz SPI时钟频率,可以轻松实现和电脑之间高速数据传输。
记使用Cloudflare Workers搭建DOH服务器
前言
一直想用自己的域名做一个dns服务器。adguard dns的自定义域名需要企业版,cloudflare zero的dns也不支持自定义域名。网上虽然很多使用cloudflare worker搭建的dns服务器,也可以自定义域名。但这里有个问题,cfworker搭建的dns服务器,客户端发起dns查询,worker请求上游dns服务器,上游dns服务器会根据worker的ip地址返回最优ip。这样的结果对于客户端来说并不是最优解。后来了解到有些dns支持edns_client_subnet参数,doh请求的时候edns_client_subnet设置成客户端的ip地址,那么上游dns服务器就会根据这个地址来返回最优ip。原理有了,接下来就是实现!
MessagePack-CSharp
MessagePack 是一种高效的二进制序列化格式。它允许你在像JSON这样的多种语言之间交换数据。但它更快,更小。小整数被编码成单个字节,典型的短字符串除了字符串本身外,只需要一个额外的字节。
MessagePack-CSharp是MessagePack的C#语言实现,它比MsgPack-Cli快10倍,支持LZ4压缩。本文将探索用MessagePack替代.net System.Text.Json,提高API效率。
Visual Studio上Winexe应用被引用编译时自动转为library
HTML打印指定DIV
思路一:创建新的窗口,在新窗口内生成div内容进行打印
1 | <!DOCTYPE html> |