Windows注册表的弊端

Windows 10/11恢复经典照片查看器:注册表修改全攻略 在Windows系统中,文件关联是决定特定文件类型由哪个程序打开的核心机制,其原理是通过注册表存储的键值映射来实现。这项技术对于提升日常工作效率和个性化系统体验具有重要价值,尤其在需要快速、无干扰地处理大量图片素材的场景下,例如摄影后期、设计审稿或日常办公。通过精准修改注册表,可以安全地恢复系统内置但被隐藏的轻量级工具,如经典的Windows照片查看器,从而替代启动缓慢、带有冗余动画的现代应用,实现指哪打哪的流畅操作体验。本文将以恢复照片查看器为例,详细解析如何通过注册表操作来优化系统工具链,并融入创建系统 阅读详情
Windows注册表的弊端
作者:Hookson          Email:Hookson@sohu.com
在Microsoft的Windows中,系统和应用程序的配置广泛的使用了注册表数据库,它在给系统带来很大的灵活性的同时也给一些另外的用户带来了很大的麻烦,下面来举例说明这一点。
1. 在Windows启动过程中,系统需要读取大量的注册表数据,它们都是以字符串的形式来寻值的,我们知道,注册表的子键层次很深,每次从根开始都有很大的时间开销。加上那些长度不算小的字符串比较操作,大大影响了系统的性能。最明显的一个影响就是系统启动速度减慢,WindowsXP的启动速度比Windows9x慢有一个重要的原因就是读取得注册表数据增多了。在配置稍落后的机器上,简直难以忍受。在启动方面我对Microsoft有一个建议,就是每次启动系统的时候不用每次都去初始化什么东西和判断运行环境什么东西,这在大部分情况下是多此一举的,其实我们的系统处于稳定的时候我们的硬件和软件都是不会有什么变化的,在这种情况下启动系统的时候我们只要把上一次离开系统的状态也就是内存中(包括虚拟内存)中的数据dump到硬盘上,下次启动的时候只要把dump的文件反过来dump到内存中,那就可以了嘛,也不必每次离开系统的时候都dump一下,只要有一次好的dump结果就行了,这样一来,那系统启动的速度一定会大大加快。当我们需要对系统配置作一些变动的时候我们再告诉系统,让它按古典的启动方式(暂且让我把现在的启动方式这样称呼吧)。时间是很宝贵的,如果我们世界上每个人每天都能节省一分钟,那每天就有一万多人年的工作机会,由此可见!
2. 一些恶意的程序可以任意的修改注册表,导致系统被做了非自愿的修改甚至导致系统崩溃,给用户带来不愉快甚至很大的损失,大部分的木马程序就是依靠在注册里修改特定的键值来繁衍生息的。如在
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/
RunServices
里加上自动启动;在HKEY_CLASSES_ROOT/<文件类型>里加上恶意的打开放式;限制用户的操作等等。
3. 系统所有的配置信息都放在一个数据库里面导致了不安全性,部分数据发生问题都会有可能导致整体的崩溃。如果一个磁盘扇区错误导致根键的发生问题,那么这个键下所有的子键都不可用了,虽然这种情况很少发生,但可能性是完全存在的,一旦发生结果非常严重。
4. 注册表的好处对普通用户体现不出来。由于注册表数据庞杂,普通用户对Windows系统的特性了解肤浅,普遍对注册表感觉有一点神秘,不敢擅自去编辑,同时系统提供给用户用来配置的应用程序也没有充分发挥注册表的威力,所以导致技术的存在而没有实用性,从而在浪费系统开销的同时并不能给用户带来好处。
5. 给程序移动和拷贝带来不必要的麻烦。通常的程序都会在注册表里注册自己的配置,离开这些配置,会导致程序无法正常运行。所以程序所在的文件夹路径一旦改变就会导致程序出错。把程序从一台机器拷贝到另一台机器时会发生更加严重的问题。在很多时候我们需要这样做,但是注册表的这个自身生来的弱点阻止了我们,所以我们不得不重新安装,浪费了宝贵的时间和精力。有时候又苦于没有安装程序,真是叫天不灵。要是手工来修改注册表项,那一是你不太清除到底应该修改那些,二是很多程序的注册表项极多,根本不可能修改的过来。
          (相应对策)待续…
2001年7月23日星期一



@ 2002.8.28 14:26 acev 发表评论 
我觉得Windows的启动速度比Linux快多了, 大家说是不是呀?

Linux启动时, 要启动许多东西 , 关闭系统时, 又要一大堆动作;

而Windows不是挺快的吗?

(希望不会被骂)
@ 2002.8.28 9:29 ixMind 发表评论 
系统信息暂时还是得用注册表,一些小软件可以用ini
@ 2002.8.28 8:41 li_hai 发表评论 
to notnoname
什么样的软件算绿色软件???
@ 2002.8.28 1:24 BlueTrees 发表评论 
注册表示一个很好的设计,他的思想是很可取的,使用注册表的优点
1、系统集中管理
2、可以授权,配置不同的用户的权限,而不是基于文件的授权
3、提高系统响应的时间,因为有缓存
4、给不同的软件提供一个一致的保存信息的结构
5、关键性的和com关系,如果没有注册表,com将无从实现,就将迫使用户寻找关键的com文件,这将是一个灾难
6、保留必须保留的易失数据,这也很关键,想象一下,一个对象需要保留中间状态,保留到文件?呵呵,麻烦,也会乱七八糟。
但他仍然曾在很多的问题,这需要改进,而不是抛弃,这种设计思想是绝对的优秀的
改进的方法
1、注册表不在基于文件系统,而是用其他的存储方式直接存放到硬盘
2、增强用户对注册表的控制能力,软件访问注册表需要授权,访问授权细化到某个部分,这样户可以建立专门的区域给某个特定的软件,而不是让软件自由的在注册表里面胡搞。
3、管理员配置用户可用区域
4、全局的系统信息也必须全部的按照不同的角色分开存放,虽然有点浪费空间,但是增强可靠性。病毒也可以少了很多,呵呵
5、管理员决定哪些内容是可以共享的。
@ 2002.8.27 21:0 gary_shi 发表评论 
to CoderNo1:
有些东西再争下去也没有什么太大的意义。至于ext2到底有没有defrag这个东西,我从来没有否认过,但是对于这个东西对于performance有多大的影响,在什么情况下有作用也请你自己去SEARCH一下。

UNIX是一个多用户的操作系统,对于任何一个应用程序来说,都需要分清到底他处于哪一个层次,到底需不需要去写/etc这个目录。如果是用户级的应用,那当然应该放到/home/xxx/etc下去。这和M$没区别?我倒是有点搞不懂了,想请你指教教了。

到底谁把谁当白痴,你自己心里有数。
@ 2002.8.27 15:57 pi1ot 发表评论 
我觉得注册表本身并不坏,但是被滥用了,很多用不着它的东西也被塞了进去。
unix那种分类的配置文件存放方式如果大家都遵守一定的规矩,也还算方便,比如说系统的放到/etc/,个人的放到~/,可是总有这样那样的不遵守约定的软件,于是我们就经常干一些找来找去就为了找一个字体配置文件之类的事情,就像windows下总有人往注册表里塞垃圾一样unix下也总有人把自己的程序的配置文件东藏西放。

我没看到有什么好的解决的办法,强制为一种标准的配置读写手段?怎么做到?总不能限制人家fopen,fread吧。
@ 2002.8.27 15:41 hanxiao2000 发表评论 
ok,我收回上面的话,但是我的意思是,如果您没有找到更好的解决方法之前,请不要这样子全盘否定注册表,unix没有注册表,但是您也看到了它的配置文件的无序性。
或者当windows基于dotnet环境之后,xml真的也成为注册表的代替品也说不定,看看现在的visual studio  .net就知道了,但是也仅是提供一种思路而已。
@ 2002.8.27 14:54 kingcom 发表评论 
MD...就知道批判...
@ 2002.8.27 14:47 zhengxionghua 发表评论 
to hanxiao2000
“没有更好的解决方法之前谈论这些是没有意义的”

请问,如果你不想,如果没有讨论
好的解决方案怎么会出来?
计算机是设计出来的,操作系统是设计出来的
现在的所有应用软件也都是设计出来的
我绝对不相信,你一个人的设计,在任何时候都能满足所有人的需求
所以你必须跟别人讨论!难道不是么?
当然,谈论只是讨论的一种形式,没不能没有!
@ 2002.8.27 14:43 gary_shi 发表评论 
re CodeNo1:
我再次提醒你,请你不要以MS角度考虑问题。你说NTFS有磁盘整理程序,那EXT2,EXT3就一定要有吗?我请你先查一下为什么FAT要有磁盘整理程序这个东西,为什么EXT2没有磁盘整理程序再说。

至于应用软件的多少,你说的多也只是桌面应用的多,说到企业应用,WINDOWS差远了。

对于应用程序装在哪儿,那更不是问题。用UNIX的人都知道去/etc下面去找配置文件,/usr/local/xxx/bin下去找执行文件,而不用关心到底是C盘,D盘,E盘....至于WINDOWS用户,要问他们把应用程序装哪儿了,拜托,他们连C盘,D盘,E盘都不知道怎么会事。

对了,为什么要有C,D,E,而UNIX却没有呢?UNIX以后会不会有C,D,E盘呢?
@ 2002.8.27 14:42 gary_shi 发表评论 
re CodeNo1:
我再次提醒你,请你不要以MS角度考虑问题。你说NTFS有磁盘整理程序,那EXT2,EXT3就一定要有吗?我请你先查一下为什么FAT要有磁盘整理程序这个东西,为什么EXT2没有磁盘整理程序再说。

至于应用软件的多少,你说的多也只是桌面应用的多,说到企业应用,WINDOWS差远了。

对于应用程序装在哪儿,那更不是问题。用UNIX的人都知道去/etc下面去找配置文件,/usr/local/xxx/bin下去找执行文件,而不用关心到底是C盘,D盘,E盘....至于WINDOWS用户,要问他们把应用程序装哪儿了,拜托,他们连C盘,D盘,E盘都不知道怎么会事。

对了,为什么要有C,D,E,而UNIX却没有呢...
@ 2002.8.27 13:27 clmate 发表评论 
写这篇文章的人是个白痴。
@ 2002.8.27 12:51 pi1ot 发表评论 
说什么unix下应用软件少得可怜的家伙。

我也不说你什么了,做好被围攻的准备吧。

哈哈。
@ 2002.8.27 12:42 Fishcat 发表评论 
现在我申明一点,我没有完全否定注册表的用处,我只是把注册表的问题提了出来,
我们的目的是解决这些问题,所以各位不用争吵.
   解决问题的办法是修改注册表的思想和结构,注册表在windows刚刚开始的时候带来的好处是明显的
但是现在已经朝着一个极端的方向发展,就是体积不断地增大.我们以后的系统会更大,应用程序会更多,
如果还按照我们现在的注册本思想,那不是一个恶梦吗?
   所以我们不应该把所有的配置都保存在注册表里头,系统的是系统的,应用程序的是应用程序的,MS是MS的,
IBM的是IBM的分得清清楚楚不是很好吗.要说程序间的合作,那当然要了.问题是这个合作不能把大家都往一个
麻袋里装啊,其实注册表里只要保存各个子配置的入口,思想就像COM一样,提供一个接口,那问题不是解决了吗!
@ 2002.8.27 12:16 CoderNO1 发表评论 
1)请问ext2有有磁盘碎片整理程序吗?记得以前NTFS也没有的,现在有了。
2)注册表的设计的确带来很多的麻烦(特别是多系统)。但不可否认他的集中管理方式也有一定的好处。Linux/Unix下的应用软件少得可怜,集中管理的必要性不太。但是Window系列就不一样,很多应用程序需要相互协作。就很简单的一个问题,某某软件安装了没有,及安装在那儿(因为你需要改其参数)?你如何知道,问用户(SB的作法,完全不管用户的感受),自已去找(用户以为你在format他的硬盘),最方便的做法是你的开放的参数让操作系统集中管理。你有更为方便的解决方法吗?


@ 2002.8.27 11:38 gary_shi 发表评论 
还有一点我前面忘记说了,启动速度不代表一切。

我碰到过这样的一件事,同一台机器机器配置PIII733+30G硬盘,在192内存的时候居然要比320M内存的时候要快(WIN 98)。
@ 2002.8.27 11:25 Fishcat 发表评论 
gary_shi说的好,我们不能把自己禁锢在别人的套子里.我们要有自己的思想.
看看注册表,从Windows98到xp,它的体积从不到10M增加到三四十M,备份一下
好半天.给人的感觉就好像是这样:一个礼品店,它不把礼品展列在礼品柜里
而是拿一个大麻袋,一股隆冬的把所有的东西都塞了进去,买的人来了,
老板装进麻袋,用一个"非常先进的检索算法"检索出顾客需要的东西,拿出来了
花的时间好像也不长..........
@ 2002.8.27 10:17 gary_shi 发表评论 
看来大家都是立足在WINDOWS的基础上在讨论问题。
其实有一点,我相信大家都是很有体会的,就是WINDOWS的机器越用越慢,刚刚装好机的时候,系统是很快的,而后就是越用越慢,就是因为什么东西都往里面面写,不分层次。其实我觉得系统启动参数和应用软件的参数完全是两个不同层次的东西,但却存在于一个注册表里。

前面的很多位朋友都是站在MS的角度在想问题,给MS的思维方式给弄坏掉了。记的有一个笑话说的是说UNIX新手问有没有磁盘碎片整理程序。

前面有位朋友说,系统启动的时候还不能用XML之类的东西,从某种程度上是没有错。但注册表里的信息很多是在系统启动以后才用的,也就是说,在启动的时候为了读取这些目前还用不到的信息浪费很多的资源,同时,在启动以后,一些硬件信息对于应用程序来说又是不用再去读取的。究其原因,仍然是前面所说的,运行级别不分,乱轰轰的写成一堆东西,造成系统性能下降。

其实楼主没说明白是一个安全问题,他只说到了由于系统注册表给恶意程序更改或是部分损坏的情况。被恶意JS更改是大家最头痛的问题,我也碰到过N次,但也没办法了,用了MS的东西就要放弃部安全性,这是大家公认的了。部分损坏问题还不大,因为总是有备份的。
安全性的问题还不止于此,因为注册表是全局的配置文件,任何一个用户用他的改动都可能造成系统完蛋,这在多用环境里是不可接受的。我在这个方面看到的资料也不多,因此我也不下结论了。
@ 2002.8.27 9:55 Fishcat 发表评论 
zpplayer:你不了解才说幼稚,请多想想吧,不是这么简单的.
@ 2002.8.27 9:45 zpplayer 发表评论 
弱智&幼稚&.....
@ 2002.8.27 9:3 CoderNO1 发表评论 
1)如julyclyde所说,XP的启动在很多人的机子上是最快的。所以其后面怎么说都站不住脚的。
2)DUMP到内存中,你可以休眠的呀?正常的启动就是为了稳定。
3)注册表给很多程序员很大的自由度。现在绿色软件不是有很多的吗?但是有的程序员水平低,有事没事地用注册表,那当然会出事。但是有的程序其配置很复杂,是需要配置数据的,复杂的情况下INI的比注册表好吗?
4)注册表是不给普通用户使用的,你看到regedit是放在系统工具里吗?用户一般情况下无必要知道其存在。

@ 2002.8.26 22:32 complexity 发表评论 
注册表纯粹是因为缺乏一致的二进制对象规范,以及缺乏对象命名和查找机制的一种临时替代品。

等系统有了完善的底层对象支持,例如象.net实现的那样,注册表终究是要淘汰的
@ 2002.8.26 22:6 hanxiao2000 发表评论 
坚决不同,意搂主的说法,注册表有些弊端没错,但是没有更好的解决方法之前谈论这些是没有意义的
曾经想过如果用xml存储信息多好,然后再仔细一想,如果是在启动的时候那根本没有办法解析xml嘛,那个时候,只能用最原始的字符串。
@ 2002.8.26 21:44 Fishcat 发表评论 
to julyclyde:在我们这里的机器上是这样的
@ 2002.8.26 17:4 tonytan 发表评论 
不用注册表,用什么呢?用ini文件, rc文件?
下次别关机,选等待,或休眠,不就可以了吗?
当然,程序老要安装不太好,拷贝就可以用是
最好的,像java系统就还可以,但是也要perperties
文件呀
@ 2002.8.26 16:45 Lostinet 发表评论 
哈,还说不判断呢。。。好啊,反正启动不起来,不要赖注册表。。
@ 2002.8.26 15:7 notnoname 发表评论 
注册表是个失败的体系!哈哈~~~~~现在强调绿色软件!
@ 2002.8.26 12:47 julyclyde 发表评论 
WindowsXP的启动速度比Windows9x慢??
Windows 11 系统字体替换:3种方法对比与风险分析,注册表与文件覆盖实测 本文详细介绍了Windows 11系统字体替换的三种方法,包括工具辅助、注册表修改和文件覆盖方案,重点分析了苹方字体在Windows 11中的应用效果与风险。通过实测对比,帮助用户选择最适合的字体美化方案,同时提供安全操作指南和常见问题解决方案。 阅读详情

相关推荐

彻底优化系统:注册表清理指南

对于经验丰富的高级用户,可以通过编辑注册表来实现自定义的清理策略,如对特定应用程序的注册表项进行清理。这里给出一个高级自定义清理策略的示例:首先确认需要清理的注册表项。例如,需要清除某个特定应用程序的配置信息。打开注册表编辑器,导航到该应用程序相关的注册表路径。检查其下的键值,注意区分那些是必须的配置信息与那些是残留的无用信息。有选择性地删除那些确实无用的键值。在删除之前,建议使用“导出”功能备份这部分注册表,以备将来需要恢复。

weixin_33557333的博客 5817

电脑注册表千万不要随随便便乱改

提醒大家电脑的注册表值大家千万不要听信网上某些教程去乱改。某些软件下载在c盘就c盘吧,要是万一改了注册表之后出现问题就很麻烦了。有些时候改的东西会直接让你的电脑操作系统崩溃,如果真要改的话,那在改之前一定要记得备份一下,以防万一。这么跟你说吧,轻则会让你的电脑内一些程序无法运行,但是有些人就会说了,那我改回来不就完了吗,不是的。

2301_77390888的博客 1530

注册表清理工具:系统性能优化秘籍

注册表清理工具是指能够扫描、分析以及清除Windows操作系统注册表中不必要或过时信息的一类软件。在技术上,注册表是Windows系统中用于存储系统配置和设置的一个数据库,它的内容涵盖软件配置、用户信息、系统参数等关键信息。随着操作系统和软件的安装、卸载以及日常使用,注册表中会出现许多冗余的数据,这些数据不仅占用系统资源,还可能导致系统运行缓慢甚至出现错误。清理工具的基本功能包括:扫描注册表:识别无效的注册表项。清理无效项:删除无用的注册表键值对。优化系统设置。

weixin_35871529的博客 1147

remapkey不能打开注册表_到底要不要清理注册表?

注册表是Windows操作系统的一个核心数据库,记载着机子的硬件信息、系统配置、用户配置等各种“高大上”的数据。对于Windows用户来说,如果不会手动修改个注册表项,简直都不好意思自称“电脑高手”。“高手”们热衷于通过regedit提升电脑运行速度、DIY系统配置,把0改成1,把1改成2,狂拽炫酷;而包括我在内的“低手”们只得望其项背,据说保不齐能把系统改瘫了,轻易不敢碰得,但有一项技能是可以轻...

weixin_39569112的博客 480

通过C#实现Windows软件开机自启动而不修改注册表

通过上述分析,我们可以看到使用“任务计划程序”作为替代注册表修改的方法,既可以减少对系统稳定性和安全性的影响,又可以提供一个相对简单直观的操作方式。然而,这一方法并非没有缺点,用户需要根据自身情况和需求来决定使用哪种方式。在选择替代方案时,应始终权衡操作的简易性、系统的稳定性和安全性。Windows Shell API提供了一套丰富的功能,允许开发者与操作系统的各种组件进行交互。当需要创建指向程序的快捷方式时,我们可以利用Shell API中的命名空间下的相关类。

weixin_35879493的博客 475

深入理解Windows 2000编程与注册表操作

本文深入探讨了Windows 2000编程中注册表操作的核心概念。首先介绍了注册表的历史背景和作用,以及它与初始化文件相比的优势。接着详细阐述了注册表编辑器的使用,包括不同版本的编辑器功能比较。文章还深入到注册表结构,详细解释了键、子键、数据类型的定义,以及如何通过编程方式访问和操作注册表。最后,提到了注册表API函数的使用,以及在编程中如何安全地进行注册表操作。

weixin_35950531的博客 524

给网站添加一个注册表 之 “类的设计”

        做网站时,很多时候要把网页的某些信息保存在网页以外的地方,通过在线编辑这些信息,达到更新网页内容的效果。对于这种情况,以前我们只有使用数据库或者文本文件来处理。         使用文本文件来保存网页信息的方式,是一种最原始的方法,使用起来相当不方便,而且对于信息的检索也是比较困难,更不用说用一个统一的方式来处理不同的网页信息。         使用数据库方式来保存网页信息的方式,

tonton的专栏 3088

Habitat安装全网最详细教程,手把手带你跑通example.py(全网唯一)

全网最详细具身智能仿真平台habitat的安装教程

shannanshouyin的博客 2755

[转载] 黑鹰完完全全学习注册表——注册表概念介绍

需要用到的软件:系统注册表(regedit.exe) 内容: 1.DOS时代的“注册表”:在DOS时代,系统只能按照默认的DOS系统参数运行,根本谈不上注册表的概念,对于一些DOS高手,则能够使用DOS系统提供的Config.sys和Autoexec.bat来配置系统,使DOS操作系统按照自己的意图行事。DOS在启动过程中,会自动在启动盘的根目录下查找Config.sys,若此文件存在,则将其...

weixin_33691817的博客 151

高通平台Camera sensor bring up!

Qualcomm Camera sensor bring up!0. 准确1. Kernel 底层驱动配置1.1 dtsi1.2 pinctrl2. Chi-Cdk XML 配置2.1 sensormodule2.2 sensor3. CHECK 本文主要针对高通平台SM7250进行描述,当然高通平台可能基本都差不多【第一个项目】 —only for sensor probe sucess. 0....

Understand-image 9239

68页|大型车企集团数字化转型汽车数字化信息系统平台规划方案

这份PPT文档提供了一个全面的汽车集团数字化转型规划方案,涵盖了项目目标、规划思路、实施关注点、解决方案建议以及合作优势等多个方面。

baidu_25525561的博客 1327

无副作用长时间禁用windows更新

无需禁用系统服务,无需组策略修改!本文提供一种安全无副作用的Windows更新暂停方案,可延长暂停周期至3650天,且不影响微软商店等核心功能。

lingzhentaor的博客 718

AHB总线协议

1. 简介         AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内

ivy_reny的专栏 8万+

【彻底禁用Windows系统的自动更新,让电脑使用更顺心!】

一招帮你轻松搞定系统自动更新,无论是家庭版,专业版都可轻松禁用!

MATou在线解决电脑故障,有问题欢迎私信交流 4887

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2840

Codex 实战 Skills:用 Skill 自动识别并提取 PDF/图片表格数据,效率提升 10 倍

本文介绍如何构建一个多模态文件解析 Skill,用于自动识别和提取 PDF/图片中的表格数据,提升 AI 智能体处理非结构化文档的效率。文章分析了传统方法的局限性,提出分层解析架构(预处理、检测、提取推理、后处理),推荐技术栈包括 pdfplumber、OpenCV 和多模态大模型。详细说明了 Skill 的元数据定义、数据模型设计(使用 Pydantic)和核心实现流程,通过混合策略实现从复杂文档到结构化 JSON/Markdown 的转换,使 AI 代理具备"阅读"多模态文档的能力。

yueyeguzhuo的专栏 300

Win32 API 注册表类的编制以及使用

Win32 API 注册表类的编制以及使用一、问题的提出Windows 已由原来的16位 windows 3.x 升级为现今我们使用的32位windows 95/97/98以其 Windows NT,用户不仅在使用上应逐步适应,对于程序开发人员来说在编程技术上也应紧跟操作系统的技术发展,就如同 在 Linux 操作系统下, X-Window 编程就显得很重要一样

1282

QML从入门到实战 - 完整学习路线

想入门 QML 开发?来 “从零开始学 QML” 专栏,海量源码 + 实战案例 + 大型项目拆解,手把手教你搞定跨平台 UI 设计,小白也能轻松掌握!

BenBierBa的博客 3477

注册表读写操作的VC实现[转]

来自:http://www.xiechunye.cn/read.php/243.htm 一、问题的提出Windows 已由原来的16位 windows 3.x 升级为现今我们使用的32位windows 95/97/98 以其 Windows NT,用户不仅在使用上应逐步适应,对于程序开发人员来说在编程技术上也应紧跟操作系统的技术发展,就如同在 Linux 操作系统下, X-Window 编程就显...

weixin_30642029的博客 360

大学计算 - NumPy库的矩阵运算 实训答案

本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。

2403_89314916的博客 308

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Windows桌面快捷方式小箭头去除:正确修改注册表覆盖图标列表

在Windows系统管理与个性化定制中,图标覆盖机制是Shell外壳的一项基础功能,它通过在原始图标上叠加特定标识来区分文件类型,例如快捷方式左下角的小箭头。其原理是系统根据注册表中的覆盖图标列表进行渲染。理解并正确修改这一机制,可以在不破坏系统功能的前提下实现深度定制,具有很高的技术价值和实用性。常见的应用场景包括系统美化、提升桌面整洁度以及满足特定工作流需求。本文聚焦于通过修改注册表键值,安全无损地移除快捷方式箭头覆盖层,并深入剖析了为何直接删除IsShortcut键值会导致功能异常,提供了从原理到实践

weixin_33976072的博客 437

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

不修改注册表关闭windows的默认共享

WindowsXP安装后是默认共享所有分区的,主要是为了便于管理员进行网络管理。可是对于普通用户来说这好像没有什么必要。因而网上就有很多人建议大家通过修改AutoShareServer和AutoShareWks的注册表值来关闭默认共享,同时关闭了远程管理服务,更大地提高了网络安全性。可是这样也有一些弊端。前一久做网络实验时我就遇到了这样的问题,把注册表值改回来就OK了。可是我又不想让我的所

sum of sumless 3416

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Windows 11右键菜单恢复Win10完整版:注册表修改与一键脚本教程

Windows系统的上下文菜单(Context Menu)是用户与文件、文件夹交互的核心界面,其功能扩展依赖于Shell扩展机制和注册表配置。注册表作为Windows的核心配置数据库,存储了所有软件集成到右键菜单的指令信息。通过修改注册表特定键值,可以控制系统Shell的渲染逻辑,从而实现对菜单样式的深度定制。这一技术对于提升工作效率、维护用户操作习惯具有重要价值,尤其适用于依赖大量第三方工具的开发、设计和办公场景。本文聚焦于Windows 11系统,针对其默认折叠式右键菜单导致的操作效率下降问题,深入解析

weixin_33938733的博客 388

windows卸载qt_Qt 获取当前计算机已安装的软件(注册表方式)

前言最近在写一些关于获取本机信息的函数,大多数获取方式都可以通过调用 windows 开发的 API 得到,当前Qt也有封装一写 API 可以直接获取到计算机的信息,如获取主机名只用:QHostInfo::localHostName()可以获取到。除了这两种方式还有一种就是用注册表方式获取,但是这种方式有个弊端就是,有些软件并不会写入注册表,所以注册表就获取不到,今天我们的获取计算机软件信息就是这...

weixin_35702295的博客 717
上一篇: 一种文件目录结构的设想
下一篇: Windows Rundll 和 Rundll32 接口
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值