在米更里下载的小程序怎么卸载

在米更里下载的小程序怎么卸载,第1张

1、找到要删除的程序,右击选属性/查找目标,在打开的页面里有这个程序的路径,如果桌面没有图标可以通过搜索查找试试。另外软件一般默认存储在C:\Program Files里面找找,到程序软件的文件夹整体删除,如果系统拒绝,请你开机按F8进入安全模式中将软件的文件夹整体删除(或下载Unlocker小软件删除)。然后,开始/运行输入regedit回车打开注册表编辑器,选编辑/查找,你卸载软件的英文名,找到软件的键值项后删除(多次查找反复删除干净)。

2、添加或删除程序在注册表的位置,运行输入regedit回车,打开注册表定位[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\CurrentVersion\Uninstall]子键,在该子键下,可跟据已卸载的应用程序软件图标,删除相对应的软件图标和键值,重新启动电脑即可。

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。

#后加数字用来表示ASCII码字符。如换行符可以用#13#10这两个字节来表示。astr:='第一行'+#13#10+'第二行';

而NULL表示空值,不一定是等于0,有可能是未赋值,或者不存在的意思。

keybd_event(VK_RETURN, 0, 0, 0); //VK_RETURN是回车,想模拟按别的键换这个值就行比如A:VK_A

Sleep(10);

keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);//第一句是按下,这句是抬起。改键值别忘了把这个句的也改了哈~~

想一直按就设一个timer

点击按钮执行 settimer(1,1000,NULL);//1000为间隔时间 1000ms

OnTimer()里执行上面的模拟按键代码

据我知道,linux和苹果MAC都没有注册表。而且微软的注册表一直被苹果所嘲笑。注册表的用处如下:

在Windows 3x *** 作系统中,注册表是一个极小文件,其文件名为Regdat,里面只存放了某些文件类型的应用程序关联,大部分的设置放在Winini、Systemini等多个初始化INI文件中。由于这些初始化文件不便于管理和维护,时常出现一些因INI文件遭到破坏而导致系统无法的启动的问题。为了使系统运行得更为稳定、健壮,Windows 95/98设计师们借用了Windows NT中的注册表的思想,将注册表引入到Windows 95/98 *** 作系统中,而且将INI文件中的大部分设置也移植到注册表中,因此,注册表在Windows 95/98 *** 作系统的启动、运行过程中起着重要的作用。

注册表的作用

[编辑本段]

注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Winnt下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win95下,16位驱动会继续以实模式方式设备工作,它们使用systemini来控制。16位应用程序会工作在NT或者Win95 下,它们的程序仍然会参考winini和systemini文件获得信息和控制。

在没有注册表的情况下, *** 作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。

在系统中注册表是一个记录32位驱动的设置和位置的数据库。当 *** 作系统需要存取硬件设备,它使用驱动程序,甚至设备是一个BIOS支持的设备。无BIOS支持设备安装时必须需要驱动,这个驱动是独立于 *** 作系统的,但是 *** 作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。

当一个用户准备运行一个应用程序,注册表提供应用程序信息给 *** 作系统,这样应用程序可以被找到,正确数据文件的位置被规定,其他设置也都可以被使用。

注册表保存关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。它同样也保存了安装信息(比如说日期),安装软件的用户,软件版本号和日期,序列号等。根据安装软件的不同,它包括的信息也不同。

然而,一般来说,注册表控制所有32位应用程序和驱动,控制的方法是基于用户和计算机的,而不依赖于应用程序或驱动,每个注册表的参数项控制了一个用户的功能或者计算机功能。用户功能可能包括了桌面外观和用户目录。所以,计算机功能和安装的硬件和软件有关,对所有用户来说项都是公用的。

有些程序功能对用户有影响,有些时作用于计算机而不是为个人设置的,同样的,驱动可能是用户指定的,但在很多时候,它们在计算机中是通用的。

注册表控制用户模式的例子有:

控制面板功能;

桌面外观和图标;

网络参数;

浏览器功能性和特征;

那些功能中的某些是和用户无关的,有些是针对用户的。

计算机相关控制项基于计算机名,和登陆用户无关。控制类型的例子是安装一个应用程序,不管是哪个用户,程序的可用性和存取是不变的,然而,运行程序图标依赖于网络上登陆的用户。网络协议可用性和优先权基于计算机,但是当前连接和用户信息相关。

这里是在注册表中基与计算机控制条目的一些例子:

存取控制;

登陆确认;

文件和打印机共享;

网卡设置和协议;

系统性能和虚拟内存设置;

在系统中注册表控制所有32位应用程序和它们的功能及多个应用程序的交互,比如复制和粘贴,它也控制所有的硬件和驱动程序。虽然多数可以通过控制面板来安装和设置,理解注册表仍是做Winnt和Win95系统管理基本常识。

与注册表有关的术语

[编辑本段]

1、HKEY :“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相像。Windows98将注册表分为六个部分,并称之为 HKEY_name,它意味着某一键的句柄。

2、key(键):它包含了附加的文件夹和一个或多个值。

3、subkey(子键):在某一个键(父键)下面出现的键(子键)。

4、branch(分支):代表一个特定的子键及其所包含的一切。一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。

5、value entry(值项):带有一个名称和一个值的有序值。每个键都可包含任何数量的值项。每个值项均由三部分组成:名称,数据类型,数据。

6、 字符串(REG_SZ):顾名思义,一串ASCII码字符。如“Hello World”,是一串文字或词组。在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。注册表总是在引号内显示字符串。

7、二进制(REG_BINARY):如 F03D990000BC ,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。

8、双 字(REG_DWORD):从字面上理解应该是Double Word ,双字节值。由1-8个十六进制数据组成,我们可用以十六进制或十进制的方式来编辑。如 D1234567 。

9、 Default(缺省值):每一个键至少包括一个值项,称为缺省值(Default),它总是一个字串。

注册表的结构

[编辑本段]

注册表是Windows程序员建造的一个复杂的信息数据库,它是多层次式的。在不同系统上注册表的基本结构相同。其中的复杂数据会在不同方式上结合,从而产生出一个绝对唯一的注册表。

计算机配置和缺省用户设置的注册表数据在Winnt中被保存在下面这五个文件中:

DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSERDAT。

Win95中所有系统注册信息保存在windows目录下的SYSTEMDAT文件里。所有硬件设置和软件信息也保存在这个文件。它要比NT注册表文件简单的多,因为这里并不需要更多的控制。Win95被设计为一个网络的客户或者单独工作的系统,所以用户控制或者安全级别和NT不一样。这使得Win95注册表工作比NT更容易,所以这个文件也比较小。

Win95用户的注册数据一般被保存在windows目录下的userdat里。如果你在控制面板|密码|用户配置文件中创建并使用多于一个用户的配置文件,每个用户就会有在\WINDOWS\Profiles\username\USERDAT下它自己的userdat文件。在启动时,系统将记录你的登陆,从你目录中的配置文件(USERDAT信息)将被装入,以用来保持你自己的桌面和图标。

控制键

[编辑本段]

在注册表编辑器中注册表项是用控制键来显示或者编辑的。控制键使得找到和编辑信息项组更容易。因此,注册表使用这些条目。下面是六个控制键 (Windows NT以前的系统)

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_DYN_DATA (基于Windows NT的系统没有这一项)

HKEY_USERS

HKEY_CURRENT_USER

Winnt和Win95的注册表并不兼容。从Win95向Winnt升级需要你重新安装32位应用程序,重新在桌面上创建图标,并重新建立用户环境。

通过控制键可以比较容易编辑注册表。虽然它们显示和编辑好像独立的键,其实HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。

HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有内容。每次计算机启动时,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的信息被映射用以查看和编辑。

HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗编辑相对来说显得更容易和有条理。

HKEY_USERS保存着缺省用户信息和当前登陆用户信息。当一个域成员计算机启动并且一个用户登陆,域控制器自动将信息发送到HKEY_CURRENT_USER里,而且HKEY_CURRENT_USER信息被映射到系统内存中。其他用户的信息并不发送到系统,而是记录在域控制器里。

键和子键

数据被分割成多层次的键和子键,建立分层次(就象Exploer一样)结构更易于编辑。每个键有成组的信息而且根据在其中的数据类型被命名。每个键在它的文件夹图标上都有一个加号(+)标志子键说明在它下面还有更多内容的东西。当点开它的时候,文件夹的加号标志被替换成一个减号(-)标志,然后显示出下一级的子键。

所有软件,硬件,windows工作的设置都存放在HKEY_LOCAL_MACHINE。所有安全策略,用户权限和共享信息也包括在这个键中。用户权限,安全策略,共享信息可以通过Windows NT域用户管理器,Explorer和Win95中控制面板来设置。

HKEY_CLASSES_ROOT (是HKLM\\Classes的映射)

HKEY_CLASSES_ROOT包含了所有应用程序运行时必需的信息:

在文件和应用程序之间所有的扩展名和关联;

所有的驱动程序名称;

类的ID数字(所要存取项的名字用数字来代替);

DDE和OLE的信息;

用于应用程序和文件的图标;

HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE中当前硬件配置信息的映射。如果系统只有一个配置文件,也就是原始配置,数据将一直在同样的地方。在控制面板|系统|硬件配置文件|创建一个额外的配置使额外配置信息放入HKEY_LOCAL_MACHINE。当Win95中存在多个配置文件时,当每次计算机启动时将给出一个提示让你选择一个配置文件。在Winnt中,在启动时你可以按空格键来选择上次正常启动时硬件配置文件。根据硬件配置文件选择的不同,特定的信息被映射到HKEY_CURRENT_CONFIG。

HKEY_DYN_DATA (基于Windows NT的系统没有这一项)

HKEY_DYN_DATA和其他的注册表控制键不同,因为实际上它并不被写入硬盘驱动器中。Win95的一个优点是,在系统启动时HKEY_DYN_DATA这个控制键储存收集到的即插即用信息并配置它们。它保存在内存中,Win95用它来控制硬件。因为是在内存中,所以它不从硬盘中读取,每次当你启动计算机时,配置都有可能会不一样。在启动时Win95必须计算超过1600种可能的配置。所以,如果系统改变既定的设置而没有报告给Win95那么潜在的问题就可能发生。系统大多数时间工作良好,但是并非一直如此。 在基于Windows NT的系统中取消了这一键值,而代之以HKLM\\HARDWARE,该键值在系统启动时由系统扫描硬件配置而动态创建

HKEY_USERS

HKEY_USERS仅包含了缺省用户设置和登陆用户的信息。虽然它包含了所有独立用户的设置,但在用户未登陆网络时用户的设置是不可用的。这些设置告诉系统哪些图标会被使用,什么组可用,哪个开始菜单可用,哪些颜色和字体可用,和控制面板上什么选项和设置可用。 在基于Windows NT的系统中,当用户打开该根键时里面包含如下内容:

1 DEFAULT (缺省用户配置文件)

2 S-1-5-18 (本地系统帐户,NT AUTHORITY\\SYSTEM,所有用户帐户都由安全标识符——SID表示,下同)

3 S-1-5-19 (本地服务帐户,NT AUTHORITY\\LocalService)

4 S-1-5-19Classes (本地服务帐户的OLE信息)

5 S-1-5-20 (网络服务帐户,NT AUTHORITY\\NETWORK SERVICE)

6 S-1-5-20Classes (网络服务帐户的OLE信息)

7当前登录用户的SID

8当前登录用户的SIDClasses

七、八两项可以通过HKCU直接进入

HKEY_CURRENT_USER

用来保存当前用户和缺省用户的信息,HKEY_CURRENT_USER仅映射当前登陆用户的信息。

各主键的简单介绍

[编辑本段]

HKEY_LOCAL_MACHINE

HKEY_LOCAL_MACHINE是一个显示控制系统和软件的处理键。HKLM键保存着计算机的系统信息。它包括网络和硬件上所有的软件设置。(比如文件的位置,注册和未注册的状态,版本号等等)这些设置和用户无关,因为这些设置是针对使用这个系统的所有用户的。

HKEY_LOCAL_MACHINE\AppEvents

为了以后在客户机上运行客户机/服务器这样的应用程序,在Win95/98中AppEvents键是空的。应用程序实际上都驻留网络服务器上,这些键会保存部分指针。

HKEY_LOCAL_MACHINE\Config

这个键保存着你计算机上所有不同的硬件设置(这些从控制面板的系统属性中硬件配置文件中可以创建)。这些配置在启动时通常被复制到HKCC。每个配置会被用一个键(比如0001或者0002等等)来保存,每个都是一个独立的配置。如果你只有一个单一的配置,那就只会有0001这个键

HKEY_LOCAL_MACHINE\Config01\Display

这个键表示显示的设置,如荧屏字体,窗体大小,窗体位置和分辨率等

一个小技巧:当设置了计算机不支持的大分辨率导致Windows不能启动时(黑屏),可以修改分辨率来解决。进入安全模式,运行regeditexe,在这个键的Resolution键值中把数据值修改为640,480或者800,600这样的低分辨率,然后重新启动计算机即可。

HKEY_LOCAL_MACHINE\Config01\System

这个键保存着系统里打印机的信息

HKEY_LOCAL_MACHINE\Config01\System\CurrentControlSet\Control\Print\Printers

在这个键下面,有一个键是为系统上每一个打印机设置的,通过控制面板添加和删除打印机会调整这个列表

HKEY_LOCAL_MACHINE\Enum

Enum键包含启动时发现的硬件设备和那些既插即用卡的信息。Win95使用总线列举在启动时通过不同的ini文件来检测硬件信息。那些在启动时被安装的和被检测到的硬件会显示在这里。子键包括BIOS, ESDI, FLOP, HTREE, ISAPNP, Monitor, Network, Root, SCSI, 和 VIRTUAL。子键名表示它们各自的硬件设备信息。

HKEY_LOCAL_MACHINE\Enum\BIOS

BIOS键保存着系统中所有即插即用设备的信息。它们用一套代码数列出,包括每一个键的详细说明,举例,pnp0400是并行口LPT1的键。如果LPT1并不具备即插即用功能,它就会别列入到Enum下的Root键中

HKEY_LOCAL_MACHINE\Enum\Root

Root键包括所有非即插即用设备的信息。在这里,我们可以迅速断定哪些设备是即插即用,那些不是。比如SCSI适配器,这个设备必须符合Win95中一个键名为ForcedConfig的硬件设置,这个不会改变。

HKEY_LOCAL_MACHINE\Enum\Network

win95的网络功能在这个键有详细说明,子键包括了每个已经安装的主要的服务和协议。

HKEY_LOCAL_MACHINE\HARDWARE

hardware子键包括了两个多层的子键:DESCRIPTION键,它包含了中央处理器和一个浮点处理器的信息。还有一个设备映射键,它下面的串行键列出你所有的com端口。这个hardware键仅保存超级终端程序的信息,及数学处理器和串行口。

HKEY_LOCAL_MACHINE\Network

这个键仅保存网络登陆信息。所有网络服务细节都保存在HKEY_LOCAL_MACHINE\Enum\Network这个键中。这个键有一个子键,logon,包括了lmlogon(本地机器登陆?0=false 1=true)的值,logonvalidated(必须登陆验证),策略处理,主登陆方式(Windows登陆 ,微软网络客户方式等),用户名和用户配置。

HKEY_LOCAL_MACHINE\SECURITY

security 有两个子键,第一个是存取(它最终致使一个远程键列出网络安全资源,存取权限等)和提供(包括列出网络地址和地址服务器),这个键被保留用在以后使用高级安全功能和NT兼容性上

HKEY_LOCAL_MACHINE\SOFTWARE

这个键列出了所有已安装的32位软件和程序的ini文件。它包括了变化,依靠软件安装。那些程序的控制功能在这里的子键中列出。多数子键简单的列出了安装软件的版本号。

我们在\Microsoft\Windows\Current Version下发现了一些有意思的设置,它有如下子键:

1App paths: 你曾经安装过的所有32位软件的位置。

2Applets, Compression, Controls Folder : 包括下控制面板象显示属性那样属性条的附件。

3Detect, explorer :很多有意思的子键如Namespace keys of Desktop和My Computer----它们指出了回收站和拨号网络的CLSID行----和提示子键可以让你建立自己的提示。

4Extensions : 一个扩展联系的列表,当前相关联的扩展名和比特定的执行文件更适合的目标类型。

5Fonts, fontsize, FS Templates :系统属性条中所选择文件系统模板, 服务器,桌面计算机或者笔记本电脑信息。

6MS-DOS Emulation :包括一个应用程序兼容子键 为大量过时的程序二进制键所设。

7MS-DOS Options :在dos模式下的设置,如himemsys,cd-roms等。

8Network :网络驱动的配置。

9Nls, Policies :系统管理员认为你不应该去做的事。

10ProfileList :所有可以登陆你计算机的用户名列表。

11在Windows启动时运行的程序的神秘之处是它们并不在开始菜单的启动文件夹中。它们在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\下的子键中被执行。

Run : 程序在启动时运行

RunOnce : windows初始化时程序在启动时只运行一次,这个经常用在当安装软件之后需要重新启动系统的时候,所以这个键一般都是空的。

RunServices : 它就象Run一样,但是包含了“服务”,它不象一般的程序它们是比较重要的或者是“系统”程序。但是它们不是VXDs,就象McAfee或者RegServ工作一样。

RunServicesOnce : 它只运行一次,但是是“系统自身”的安装(大量的windows安装参数:通常键值包括了系统目录位置,和win95更新,可选项安装组件,和windows启动目录的子键。

注意:在很多黑客木马软件中,常常在这里添加键值(一般是在Run中),这样使得木马软件可以随着windows启动而启动并且很隐秘。在这里可以查看不正常的启动项和去掉无用的运行程序(比如我就很不喜欢超级解霸的自动伺服器,在这里可以去掉它)。

12SharedDLLs:共享DLL的列表,每一个都给出了在一个不可知系统的一个数字等级。

13Shell Extensions:列出了“被认可的”OLE注册条,和相应的CLSID连接。

14ShellScrap :这个包含了一个PriorityCacheformats的子键,它包括了一个空的有限值,它更象过去SmartDrive命令行参数的派生。

15Time Zones : 主键值是你现在的时区;子键定义了所以可能的时区。

16Uninstall:这个保存了程序在添加/删除程序对话框的显示;子键包含了指向反安装程序的路径。和安装向导相似)winlogon(包含了合法登陆布告的文本句)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

这个子键包括设备驱动和其他服务的描述和控制。不同于windows nt,win95只包括限制驱动的控制设置信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

这个键包括了所有win95的标准服务。所有被添加的服务和设备,每个标准的服务键包括了它的设置和辨认设置。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Arbitrators

atbitrators键包括了当两个设备共同占用同样的设置需要解决的信息。四个子键包括了内存地址,冲突,DMA,I/O端口冲突和IRQ冲突。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class

class键包括了所有win95支持的设备classes控制,这些和你在添加新硬件出现的硬件组很类似,还包括了这些设备如何安装的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\inetaccs

这个键包括了关于这个系统变化的ie附件的可用性,它仅在你安装过ie2。0或者更高版本才出现。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSNP32

msnp32描述了客户机如何在microsoft网络中实现功能,它包括了认证过程和认证者的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNP32

nenp32键描述了windows客户如何在netware网络中工作功能,它包括了关于认证过程和证明者的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess

在这个键里包括需要远程工作在win95系统上的信息,有认证参数,主机信息,和为了建立一个拨号连接工作的协议信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP

这个键包括了所以snmp(简单网络管理协议)的参数。它包括了允许的管理,配置陷阱,和有效的团体。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD

vxd键包括了win95中所有32位虚拟设备驱动信息,win95自动管理它们,所以不必要用注册表编辑器编辑它们,所以的静态vxds用子键列出。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebPost

webpost键包括了所有装载的internet邮局的设置,如果你连接一个isp,并且它列出载这里,你应该给自己选则一个服务器。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock

这个键列出了当连接到internet上winnsock文件的信息,如果列出了不正确的文件,你将不会连接上internet。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinTrust

wintrust功能是检查从Internet上下载来的文件是否有病毒,它可以确保你得到干净安全的文件。

HKEY_CLASSES_ROOT

在注册表中HKEY_CLASSES_ROOT是系统中控制所有数据文件的项。这个在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。

HKEY_CLASSES_ROOT被用作程序员在安装软件时方便的发送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在HKEY_CLASSES_ROOT中加入数据就可以了。

在Windows用户图形界面下,每件事----每个文件,每个目录,每个小程序,每个连接,每个驱动---都被看做一个对象;每个对象都有确定的属性和它联系。HKCR包含着对象类型和它们属性的列表。HKCR主要的功能被设置为:

一个对象类型和一个文件扩展名关联

一个对象类型和一种图标关联

一个对象类型和一个命令行动作的关联

定义对象类型相关菜单选项和定义每一个对象类型属性选项

在Win95中,相关菜单就是当你鼠标右击一个对象时所d出的菜单;属性就是当你选择属性项后一个展开的对话框。用简单术语来说就是在改变HKCR中的设置可以改变一个给定文件扩展名缺省的关联。改变一个文件类型的缺省图标,和添加或者删除给定对象类型的d出菜单内容(或者所有的对象类型)

HKCR包括了三种基本类型的子键

\ 或者文件扩展名子键

文件扩展名子键在d出菜单上连接文件扩展名到对象类型和相关 *** 作,属性项,和相关 *** 作。

\object 类型子键

对象类型子键定义了一个对象类型在它缺省图标的项,它的d出菜单和属性项,它的相关 *** 作和它的CLSID连接。

\CLSID 子键

在Windows下每件事都被用一个数字取代它的名字来对待。就象人往往是用名字来处理事情一样。CLSID是标识所有列出的图标,应用程序,目录,文件类型等等对象的数字。是微软为制造商分配的,每一个都必须是唯一的。制造商将CLSID放入安装程序文件这样就可以在安装时更新注册表。

注册表是应用程序进行时它们需要关于做什么的指示的数据库。比如说,假定你有一个微软Excel 7电子数据表的Word 7文档,当你在Word中双击这个电子数据表,应用程序菜单就会变成Excel的菜单而且电子数据表进入编辑状态,就好像你在Excel中一样。它是如何知道该做什么呢?每个Excel 7创建的文件都有Excel的CLSID连接。Word读这个CLSID后,到注册表中寻找指示,依赖CLSID下的数据运行DLL文件或者应用程序。

CLSID子键为对象类型提供了OLE和DDE信息和图标。相关菜单,或者包含在它子键中的属性项信息。这个可能是多数让人看到后觉得“恐怖”的键。每个CLSID数必须是唯一的,实际上,为了这个目的微软已经出产了CLSID-产生程序--这个结果导致你往往得到32位16进制的数字串,除非你是程序员,否则多数部分键看起来是很枯燥的。它们包括内存管理模式,客户机/服务器配置,和OLE处理的dll连接。

参考资料:

>

黑白棋游戏

#include "graphicsh" /图形系统头文件/

#define LEFT 0x4b00 /光标左键值/

#define RIGHT 0x4d00 /光标右键值/

#define DOWN 0x5000 /光标下键值/

#define UP 0x4800 /光标上键值/

#define ESC 0x011b / ESC键值/

#define ENTER 0x1c0d / 回车键值/

int a[8][8]={0},key,score1,score2;/具体分数以及按键与存放棋子的变量/

char playone[3],playtwo[3];/两个人的得分转换成字符串输出/

void playtoplay(void);/人人对战函数/

void DrawQp(void);/画棋盘函数/

void SetPlayColor(int x);/设置棋子第一次的颜色/

void MoveColor(int x,int y);/恢复原来棋盘状态/

int QpChange(int x,int y,int z);/判断棋盘的变化/

void DoScore(void);/处理分数/

void PrintScore(int n);/输出成绩/

void playWin(void);/输出胜利者信息/

/主函数/

void main(void)

{

int gd=DETECT,gr;

initgraph(&gd,&gr,"c:\\tc"); /初始化图形系统/

DrawQp();/画棋盘/

playtoplay();/人人对战/

getch();

closegraph();/关闭图形系统/

}

void DrawQp()/画棋盘/

{

int i,j;

score1=score2=0;/棋手一开始得分都为0/

setbkcolor(BLUE);

for(i=100;i<=420;i+=40)

{

line(100,i,420,i);/画水平线/

line(i,100,i,420); /画垂直线/

}

setcolor(0);/取消圆周围的一圈东西/

setfillstyle(SOLID_FILL,15);/白色实体填充模式/

fillellipse(500,200,15,15); /在显示得分的位置画棋/

setfillstyle(SOLID_FILL,8); /黑色实体填充模式/

fillellipse(500,300,15,15);

a[3][3]=a[4][4]=1;/初始两个黑棋/

a[3][4]=a[4][3]=2;/初始两个白棋/

setfillstyle(SOLID_FILL,WHITE);

fillellipse(120+340,120+340,15,15);

fillellipse(120+440,120+440,15,15);

setfillstyle(SOLID_FILL,8);

fillellipse(120+340,120+440,15,15);

fillellipse(120+440,120+340,15,15);

score1=score2=2; /有棋后改变分数/

DoScore();/输出开始分数/

}

void playtoplay()/人人对战/

{

int x,y,t=1,i,j,cc=0;

while(1)/换棋手走棋/

{

x=120,y=80;/每次棋子一开始出来的坐标,x为行坐标,y为列坐标/

while(1) /具体一个棋手走棋的过程/

{

PrintScore(1);/输出棋手1的成绩/

PrintScore(2);/输出棋手2的成绩/

SetPlayColor(t);/t变量是用来判断棋手所执棋子的颜色/

fillellipse(x,y,15,15);

key=bioskey(0);/接收按键/

if(key==ESC)/跳出游戏/

break;

else

if(key==ENTER)/如果按键确定就可以跳出循环/

{

if(y!=80&&a[(x-120)/40][(y-120)/40]!=1

&&a[(x-120)/40][(y-120)/40]!=2)/如果落子位置没有棋子/

{

if(t%2==1)/如果是棋手1移动/

a[(x-120)/40][(y-120)/40]=1;

else/否则棋手2移动/

a[(x-120)/40][(y-120)/40]=2;

if(!QpChange(x,y,t))/落子后判断棋盘的变化/

{

a[(x-120)/40][(y-120)/40]=0;/恢复空格状态/

cc++;/开始统计尝试次数/

if(cc>=64-score1-score2) /如果尝试超过空格数则停步/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

break;

}

else

continue;/如果按键无效/

}

DoScore();/分数的改变/

break;/棋盘变化了,则轮对方走棋/

}

else/已经有棋子就继续按键/

continue;

}

else /四个方向按键的判断/

if(key==LEFT&&x>120)/左方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x-=40;

fillellipse(x,y,15,15);

}

else

if(key==RIGHT&&x<400&&y>80)/右方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15,15);

}

else

if(key==UP&&y>120)/上方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y-=40;

fillellipse(x,y,15,15);

}

else

if(key==DOWN&&y<400)/下方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15);

}

}

if(key==ESC)/结束游戏/

break;

if((score1+score2)==64||score1==0||score2==0)/格子已经占满或一方棋子为0判断胜负/

{

playWin();/输出最后结果/

break;

}

t=t%2+1; /一方走后,改变棋子颜色即轮对方走/

cc=0; /计数值恢复为0/

} /endwhile/

}

void SetPlayColor(int t)/设置棋子颜色/

{

if(t%2==1)

setfillstyle(SOLID_FILL,15);/白色/

else

setfillstyle(SOLID_FILL,8);/灰色/

}

void MoveColor(int x,int y)/走了一步后恢复原来格子的状态/

{

if(y<100)/如果是从起点出发就恢复蓝色/

setfillstyle(SOLID_FILL,BLUE);

else/其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘/

switch(a[(x-120)/40][(y-120)/40])

{

case 1:

setfillstyle(SOLID_FILL,15);break; /白色/

case 2:

setfillstyle(SOLID_FILL,8);break; /黑色/

default:

setfillstyle(SOLID_FILL,BLUE); /蓝色/

}

}

int QpChange(int x,int y,int t)/判断棋盘的变化/

{

int i,j,k,kk,ii,jj,yes;

yes=0;

i=(x-120)/40; /计算数组元素的行下标/

j=(y-120)/40; /计算数组元素的列下标/

SetPlayColor(t);/设置棋子变化的颜色/

/开始往8个方向判断变化/

if(j<6)/往右边/

{

for(k=j+1;k<8;k++)

if(a[i][k]==a[i][j]||a[i][k]==0)/遇到自己的棋子或空格结束/

break;

if(a[i][k]!=0&&k<8)

{

for(kk=j+1;kk<k&&k<8;kk++)/判断右边/

{

a[i][kk]=a[i][j]; /改变棋子颜色/

fillellipse(120+i40,120+kk40,15,15);

}

if(kk!=j+1) /条件成立则有棋子改变过颜色/

yes=1;

}

}

if(j>1)/判断左边/

{

for(k=j-1;k>=0;k--)

if(a[i][k]==a[i][j]||!a[i][k])

break;

if(a[i][k]!=0&&k>=0)

{

for(kk=j-1;kk>k&&k>=0;kk--)

{

a[i][kk]=a[i][j];

fillellipse(120+i40,120+kk40,15,15);

}

if(kk!=j-1)

yes=1;

}

}

if(i<6)/判断下边/

{

for(k=i+1;k<8;k++)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0&&k<8)

{

for(kk=i+1;kk<k&&k<8;kk++)

{

a[kk][j]=a[i][j];

fillellipse(120+kk40,120+j40,15,15);

}

if(kk!=i+1)

yes=1;

}

}

if(i>1)/判断上边/

{

for(k=i-1;k>=0;k--)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0&&k>=0)

{

for(kk=i-1;kk>k&&k>=0;kk--)

{

a[kk][j]=a[i][j];

fillellipse(120+kk40,120+j40,15,15);

}

if(kk!=i-1)

yes=1;

}

}

if(i>1&&j<6)/右上/

{

for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]&&k>=0&&kk<8)

{

for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i<6&&j>1)/左下/

{

for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&k<8&&kk>=0)

{

for(ii=i+1,jj=j-1;ii<k&&k<8;ii++,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

if(i>1&&j>1)/左上/

{

for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&k>=0&&kk>=0)

{

for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i<6&&j<6)/ 右下/

{

for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&kk<8&&k<8)

{

for(ii=i+1,jj=j+1;ii<k&&k<8;ii++,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

return yes;/返回是否改变过棋子颜色的标记/

}

void DoScore()/处理分数/

{

int i,j;

score1=score2=0;/重新开始计分数/

for(i=0;i<8;i++)

for(j=0;j<8;j++)

if(a[i][j]==1)/分别统计两个人的分数/

score1++;

else

if(a[i][j]==2)

score2++;

}

void PrintScore(int playnum)/输出成绩/

{

if(playnum==1)/清除以前的成绩/

{

setfillstyle(SOLID_FILL,BLUE);

bar(550,100,640,400);

}

setcolor(RED);

settextstyle(0,0,4);/设置文本输出样式/

if(playnum==1)/判断输出哪个棋手的分,在不同的位置输出/

{

sprintf(playone,"%d",score1);

outtextxy(550,200,playone);

}

else

{

sprintf(playtwo,"%d",score2);

outtextxy(550,300,playtwo);

}

setcolor(0);

}

void playWin()/输出最后的胜利者结果/

{

settextstyle(0,0,4);

setcolor(12);

if(score2>score1)/开始判断最后的结果/

outtextxy(100,50,"black win!");

else

if(score2<score1)

outtextxy(100,50,"white win!");

else

outtextxy(60,50,"you all win!");

}

五子棋游戏

/五子棋/

#include<stdioh>

#include<stdlibh>

#include<graphicsh>

#include<biosh>

#include<conioh>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define SPACE 0x3920

#define BILI 20

#define JZ 4

#define JS 3

#define N 19

int box[N][N];

int step_x,step_y ;

int key ;

int flag=1 ;

void draw_box();

void draw_cicle(int x,int y,int color);

void change();

void judgewho(int x,int y);

void judgekey();

int judgeresult(int x,int y);

void attentoin();

void attention()

{

char ch ;

window(1,1,80,25);

textbackground(LIGHTBLUE);

textcolor(YELLOW);

clrscr();

gotoxy(15,2);

printf("游戏 *** 作规则:");

gotoxy(15,4);

printf("Play Rules:");

gotoxy(15,6);

printf("1、按左右上下方向键移动棋子");

gotoxy(15,8);

printf("1 Press Left,Right,Up,Down Key to move Piece");

gotoxy(15,10);

printf("2、按空格确定落棋子");

gotoxy(15,12);

printf("2 Press Space to place the Piece");

gotoxy(15,14);

printf("3、禁止在棋盘外按空格");

gotoxy(15,16);

printf("3 DO NOT press Space outside of the chessboard");

gotoxy(15,18);

printf("你是否接受上述的游戏规则(Y/N)");

gotoxy(15,20);

printf("Do you accept the above Playing Rules [Y/N]:");

while(1)

{

gotoxy(60,20);

ch=getche();

if(ch=='Y'||ch=='y')

break ;

else if(ch=='N'||ch=='n')

{

window(1,1,80,25);

textbackground(BLACK);

textcolor(LIGHTGRAY);

clrscr();

exit(0);

}

gotoxy(51,12);

printf(" ");

}

}

void draw_box()

{

int x1,x2,y1,y2 ;

setbkcolor(LIGHTBLUE);

setcolor(YELLOW);

gotoxy(7,2);

printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit");

for(x1=1,y1=1,y2=18;x1<=18;x1++)

line((x1+JZ)BILI,(y1+JS)BILI,(x1+JZ)BILI,(y2+JS)BILI);

for(x1=1,y1=1,x2=18;y1<=18;y1++)

line((x1+JZ)BILI,(y1+JS)BILI,(x2+JZ)BILI,(y1+JS)BILI);

for(x1=1;x1<=18;x1++)

for(y1=1;y1<=18;y1++)

box[x1][y1]=0 ;

}

void draw_circle(int x,int y,int color)

{

setcolor(color);

setlinestyle(SOLID_LINE,0,1);

x=(x+JZ)BILI ;

y=(y+JS)BILI ;

circle(x,y,8);

}

void judgekey()

{

int i ;

int j ;

switch(key)

{

case LEFT :

if(step_x-1<0)

break ;

else

{

for(i=step_x-1,j=step_y;i>=1;i--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i<1)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case RIGHT :

if(step_x+1>18)

break ;

else

{

for(i=step_x+1,j=step_y;i<=18;i++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i>18)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case DOWN :

if((step_y+1)>18)

break ;

else

{

for(i=step_x,j=step_y+1;j<=18;j++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j>18)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case UP :

if((step_y-1)<0)

break ;

else

{

for(i=step_x,j=step_y-1;j>=1;j--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j<1)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case ESC :

break ;

case SPACE :

if(step_x>=1&&step_x<=18&&step_y>=1&&step_y<=18)

{

if(box[step_x][step_y]==0)

{

box[step_x][step_y]=flag ;

if(judgeresult(step_x,step_y)==1)

{

sound(1000);

delay(1000);

nosound();

gotoxy(30,4);

if(flag==1)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/定义一个图形窗口/

setfillstyle(1,2);

/绿色以实填充/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,5);

/三重笔划字体, 水平放5倍/

outtextxy(20,20,"The White Win !");

setcolor(15);

settextstyle(3,0,5);

/无衬笔划字体, 水平放大5倍/

outtextxy(120,120,"The White Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

if(flag==2)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/定义一个图形窗口/

setfillstyle(1,2);

/绿色以实填充/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,8);

/三重笔划字体, 水平放大8倍/

outtextxy(20,20,"The Red Win !");

setcolor(15);

settextstyle(3,0,5);

/无衬笔划字体, 水平放大5倍/

outtextxy(120,120,"The Red Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

}

change();

break ;

}

}

else

break ;

}

}

void change()

{

if(flag==1)

flag=2 ;

else

flag=1 ;

}

void judgewho(int x,int y)

{

if(flag==1)

draw_circle(x,y,15);

if(flag==2)

draw_circle(x,y,4);

}

int judgeresult(int x,int y)

{

int j,k,n1,n2 ;

while(1)

{

n1=0 ;

n2=0 ;

/水平向左数/

for(j=x,k=y;j>=1;j--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/水平向右数/

for(j=x,k=y;j<=18;j++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/垂直向上数/

n1=0 ;

n2=0 ;

for(j=x,k=y;k>=1;k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/垂直向下数/

for(j=x,k=y;k<=18;k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/向左上方数/

n1=0 ;

n2=0 ;

for(j=x,k=y;j>=1,k>=1;j--,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/向右下方数/

for(j=x,k=y;j<=18,k<=18;j++,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/向右上方数/

n1=0 ;

n2=0 ;

for(j=x,k=y;j<=18,k>=1;j++,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/向左下方数/

for(j=x,k=y;j>=1,k<=18;j--,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

return(0);

break ;

}

}

void main()

{

int gdriver=VGA,gmode=VGAHI;

clrscr();

attention();

initgraph(&gdriver,&gmode,"c:\\tc");

/ setwritemode(XOR_PUT);/

flag=1 ;

draw_box();

do

{

step_x=0 ;

step_y=0 ;

/draw_circle(step_x,step_y,8); /

judgewho(step_x-1,step_y-1);

do

{

while(bioskey(1)==0);

key=bioskey(0);

judgekey();

}

while(key!=SPACE&&key!=ESC);

}

while(key!=ESC);

closegraph();

}

以上就是关于在米更里下载的小程序怎么卸载全部的内容,包括:在米更里下载的小程序怎么卸载、Delphi中#0和null有区别吗今天自己写了个小程序,用#0没问题,null就不行,这是怎么回事、用c++写个模拟按键的小程序,比如我用一个按钮,点击按钮就一直模拟重复按下某键。怎么鞋等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10114935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存