滑鼠不好用了 如何修改登录档恢复滑鼠右键
如何修改登录档恢复滑鼠右键
如何修改登录档恢复滑鼠右键
你是要删除多余的右键选单吧,用XP超级右键管理软体可以删除。如果你要自己修改登录档的话,可以搜寻该名称,然后找到该项登录档,删除掉即可。
如何通过修改登录档,禁用和恢复滑鼠右键?
1.控制台法
重新启动计算机,按下F8键,在Windows高阶选项选单里选择“带命令列提示的安全模式”,进入安全模式;键入MMC,开启控制台视窗,单击“档案→ 新增/删除管理单元”,在“独立”选项卡中单击“新增”按钮,选择“组策略”管理单元,单击“新增”按钮,再分别单击“完成”、“关闭”、“确定”即可;这样,新增的组策略管理单元将出现在控制台视窗中,接下来把设定改回去(即设为“未配置”);最后,按下“Ctrl+Alt+Delete”组合键,点选“关机”按钮,选择“重新启动”即可。
提示:在“带命令列提示的安全模式”中,是看不到“开始”选单和系统工作列的,不过,我们可以键入“explorer.exe”开启它们。
2.命令列法
首先进入“带命令列提示的安全模式”;然后键入“reg add HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer /t reg_dword /d0”命令,回车之后,系统会提示是否覆蓋存在的“RestrictRun”键值项,键入“Y”并回车即可。这样,登录档里相应的内容已经被恢复了。
3.登录档法
通过直接修改登录档的方法也可以解决该问题。首先进入“带命令列提示的安全模式”,在命令提示符下键入“regedit”,开启“登录档编辑器”,展开分支“HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer”,将“RestrictRun”的值修改为0即可。
如何通过修改登录档来禁用桌面滑鼠右键?
1修改登录档~
2就是通过第3方软体~
3CS设定里的右健去了吧~(就是设定键盘的那里)~
4主版是不是有问题~
我觉得就著几种
登录档按下面的登录档资讯改:
HKEY_CURRENT_USER/Sofare/Policies/Microsoft/Inter Explorer/Restrictions
“NoViewSource”=dword:00000001
"NoBrowserContextMenu"=dword:00000001
HKEY_USERS/.DEFAULT/Sofare/Policies/Microsoft/Inter Explorer/Restrictions
“NoViewSource”=dword:00000001
“NoBrowserContextMenu”=dword:00000001
]滑鼠右键选单优化指南.
滑鼠右键选单优化指南.
滑鼠右键选单优化指南
精简篇:
一、去掉新建选单中的无用项.
1.在桌面上点右键→新建→任意选择一个建立,记下它的副档名,这里我建立的Photoshop影象,副档名为psd.
2.找开RegWorkshop,双击开启HKEY_CLASSES_ROOT根键,可以看到下面有许多".xxx"的主键,这里登记的就是windows中副档名与应用程式的对应关系(比如txt档案与记事本程式notepad.exe对应).
3.找到.psd主键(快捷方法:选中任意主键,然后在快速键入.psd,程式就会自动切换到该主键),双击开启该键,看到下面有个ShellNew主键,选中ShellNew,检视右侧视窗,可以看到一个NullFile的空字串,将ShellNew主键直接删除即可.
4,需要说明的几点:
①对于.txt主键下的ShellNew建议保留,经常在用到.
②有些副档名的ShellNew键右边没有NullFile字串,如.rar,如图,这种情况,要在新建中去掉的话,建议将ShellNew主键改为ShellNew-,以便以后还可以改回.
③比较特殊的一个:写字板文件,主键名为.doc,它下面有4个ShellNew,我们照上面的方法,只删掉有NullFile字串的主键.
④有些应用程式在开启时会查询ShellNew主键,发现不存在或改动时就会新建一个,对付方法:设定许可权,右击ShellNew主键,选择"许可权",在弹出的视窗中将使用者许可权设为"拒绝".
知识点:
1.登录档中的根键(指可以编辑器中看到的)只有5个,分别是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG
2.子键(或称主键):在这些主键下面的键全部称为主键.
3.键值:每个键对应的右视窗中的专案称为该键的键值,常用的有:字串、可扩充字串、DWORD值和二进位制值.
4.资料:赋予键值的字元称为该键值的资料.
5.①字串:可键入所有合法字元做为资料.
②可扩充字串:跟字串类似,但可以键入变数,如%SystemRoot%system32notepad.exe
③二进位制值:可以用来表示任意长度的整数,在登录档中以十六进位制方式表示.
④DWORD值:一般用作真假判断,0表示假;1表示真.
二、所有档案右键选单.
1.举例:比如我安装了avast! Antivirus和一个小工具,现在右键变成这样.
2.找开RegWorkshop,双击开启HKEY_CLASSES_ROOT根键,开启*主键(*表示所有档案),下面有两个与右键相关的键:Shell和ShellexContextMenuHandlers.
Shell:这个键下面一般为以下结构:
HKEY_CLASSES_ROOT*shell
HKEY_CLASSES_ROOT*shellopen
HKEY_CLASSES_ROOT*shellopenmand
表明*键与mand子键中所指定的应用程式建立了关联.
Shellex:说明*键的档案型别与Windows系统中的外壳扩充套件中的属性页控制代码建立了关联.在ShellexContextMenuHandlers键下面,子键名一般为{454F08EA-A099-4353-834C-8A66147D4A0F}形式,或该键的预设键值为这种形式.
知识点:{454F08EA-A099-4353-834C-8A66147D4A0F}在此键中一般是程式在登录档中注册的CLSID.
CLSID是class ID的缩写.对于每个元件类,都需要分配一个唯一表示它的程式码,就是ID,为了避免冲突,微软使用GUID作为CLSID,有生成GUID的函式,主要是根据当时的时间、机器地址等资讯动态产生,理论上可保证全球唯一.
3.开启Shell键,在下面找到了Go Dos和Go Explorer两项,删除.
4.开启shellexContextMenuHandlers键,在下面找到了avast键,删除.
现在随便点个档案看看效果,呵呵.已经没有了.
三、资料夹右键选单.
1.在资料夹上点右键,看一下多了三项:Go Dos、MS-DOS和复制路径.
2.找到Directory主键(资料夹),开启下面的Shell键,果然发现了Go Dos和MSDOS子键,
细心的朋友一定发现了,在选单上显示的是MS-DOS,便这里怎么变MSDOS了.原来选单上显示的文字是在该键的预设值中设定的.
现在我们将预设数值清空看看效果,现在它就以MSDOS键名做了选单文字,并预设第一个字母为快捷键.(指定快捷键的方法:在需要用做快捷键的字母前加&.如MS&DOS,主键或资料中均可).
3.开启DirectoryshellexContextMenuHandlers,找到Ninotech Path Copy,这就是在选单中出现的"复制路径".这里需要说明的是,有些程式放到右键选单中的文字不是写在登录档中的,而是在DLL档案中,就像此例,处理这种情况要谨慎.
四、驱动器右键选单.
1.看看驱动器的右键选单,也多了个Go Dos选项.
2.找到Drive主键,或在位址列键入HKEY_CLASSES_ROOTDrive,转到该键.开启Shell子键,删掉下面的Go Dos键.
五、资料夹右键选单.
1.它在登录档中的名称为Folder,笼统的说就是包括资料夹和驱动器在内.具体是如何定义和区分的尚未搞清(PS:有懂的朋友麻烦指点一下).
2.如果你的资料夹和驱动器右键中有相同的选单,但是在HKEY_CLASSES_ROOTDirectory和HKEY_CLASSES_ROOTDrive中都找不到话,那它一定是放在了这个键下面.
3.上文提到我安装了avast! Antivirus,它就是在HKEY_CLASSES_ROOTFoldershellexContextMenuHandlers中写入的.处理方法有两种:禁用和删除,禁用方法:在预设资料前面或后面加"-".
六、特定型别右键选单.
1.TXT档案:找到.txt主键,在右侧视窗中预设字串上点右键选择"转到引用的登录档项",这时就会转到一个名为txtfile的主键,然后照上面的方法删掉相关项即可.
小知识:在HKEY_CLASSES_ROOT中,一个副档名一般都两个键,分别为.xxx和xxxfile,其中xxxfile叫做.xxx的主档案型别,该键记录了这种型别档案的图示、右键选单、预设开启方式等.
2.未知型别右键选单:HKEY_CLASSES_ROOTUnknown
3.IE右键选单:HKEY_CURRENT_USERSofareMicrosoftInter ExplorerMenuExt,直接Del掉不需要的主键即可.
七、其它清理.
1.清除桌面右键→排列图示中的无用项,用XP的朋友会发现右键选单中多了以下几项,
如果用不到的话可以在登录档中禁用.开启登录档HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer,在右侧新建DWORD值,然后改名为"NoActiveDesk",双击,键入资料1,登出一下即可.
2.去掉Intel整合显示卡的桌面右键选单:在执行中输入regsvr32 /u igfxpph.dll,重新注册:regsvr32 igfxpph.dll
禁用篇:
1.禁用系统右键选单:HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer,在右面增加DWORD值:NoViewContextMenu,并赋予资料1.
2.禁用工作列右键选单:HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer,在右面增加DWORD值:NoTrayContextMenu,并赋予资料1.
经验:在windows禁用的专案大都在这个键下面.
增强篇:
一、手工新增法:学会了精简,增强也就不难了,就是把以上方法逆着来做.
1.为资料夹右键新增"命令提示符",开启HKEY_CLASSES_ROOTDirectoryshell,在下面新建主键cmd并改右侧视窗中的预设字串为"命令提示符",然后在cmd下建立子键mand,改右侧视窗中的预设字串为cmd.exe /k "cd %L"
2.为未知副档名的档案右键新增"用记事本开启",开启HKEY_CLASSES_ROOTUnknownshell,在下面新建主键open并改右侧视窗中的预设字串为"用记事本开启",然后在open下建立子键mand,改右侧视窗中的预设字串为C:windowssystem32notepad.exe %1
3.为DLL档案右键新增"注册控制元件"和"登出控制元件",开启HKEY_CLASSES_ROOTdllfileshell,在下面新建主键RegSvr并改右侧视窗中的预设字串为"注册控制元件",然后在RegSvr下建立子键mand,改右侧视窗中的预设字串为regsvr32 %1;同样在HKEY_CLASSES_ROOTdllfileshell下新建主键UnRegSvr并改右侧视窗中的预设字串为"登出控制元件",然后在UnRegSvr下建立子键mand,改右侧视窗中的预设字串为 regsvr32 /u %1
二、指令码新增法:
1.何为登录档指令码:登录档指令码是字尾名为reg,有固定格式,双击汇入后即可完成对注册相关键值的新增、删除、修改等的文字档案.
2.格式:
REGEDIT4 ;如果是2K/XP系统的话,写成Windows Registry Editor Version 5.00
;必须空一行!
[登录档路径]
@="资料" ;修改预设字串.
"键值"="资料" ;修改或新增字串.
"键值"=hex:资料 ;修改或新增二进位制值.
"键值"=dword:资料 ;修改或新增DWORD值.
"键值"=- ;删除键值.
;最后也必须空一行!~
3.删除主键示例:
REGEDIT4
[-HKEY_CURRENT_USERSofareFlashFXP]
;
4.以上三项的新增指令码:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTdllfileshell]
[HKEY_CLASSES_ROOTdllfileshellRegSvr]
@="注册控制元件"
[HKEY_CLASSES_ROOTdllfileshellRegSvrCommand]
@="regsvr32 %1"
[HKEY_CLASSES_ROOTdllfileshellUnRegSvr]
@="登出控制元件"
[HKEY_CLASSES_ROOTdllfileshellUnRegSvrCommand]
@="regsvr32 /u %1"
;
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTDirectoryshellcmd]
@="命令提示符"
[HKEY_CLASSES_ROOTDirectoryshellcmdCommand]
@="cmd.exe /k "cd %L""
;
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTUnknownshellopen]
@="用记事本开启"
[HKEY_CLASSES_ROOTUnknownshellopenmand]
@="C:\WINDOWS\NOTEPAD.EXE %1"
;
说明:1.指令码中路径必须用\来代替.
2.给路径新增引号:"C:WINDOWSSYSTEM32NOTEPAD.EXE" 在指令码中写成""C:\WINDOWS\SYSTEM32\NOTEPAD.EXE""
修复篇:
1.reg档案双击不能汇入,而是呼叫记事本开启.在该档案上点选右键后发现编辑成了预设项.
2.修复方法:开启HKEY_CLASSES_ROOTregfileshell,看到右边的预设字串被改成了edit,清空该项即可.
小技巧:将预设字串改为print的话,双击就变成列印档案啦.
右键相关工具:
1.关闭光碟机:在光碟机右键中新增"关闭"选项.
2.PathCopy:在档案右键中新增如下选项.
3.Total Copy:当用滑鼠右键拖动档案时,会出现如下选项.
4.ContextEdit:功能强大的右键选单编辑工具,可完成以上所有操作.
5.Unlocker:解锁被程序呼叫的档案,使之可以被删除.
6.RegWorkshop:堪称完美的登录档编辑工具.

360拒绝修改登录档键值如何恢复
360这个问题早就有了,很烦人的,只能小心。我还不知道怎么改,上次是用的联想一键恢复。
如何修改登录档键值
登录档被人认成为是“无字天书”,颇有几分神祕。对初学者,谨慎操作为妙,但也不应有什么恐惧。对于初学登录档来说,不必去记下注册表的所有项值。当遇到需要修改登录档时,只要按以下5个步骤,照着操作就可以了,以下供参考:
1.上Google、百度等查出要修改的具体项或键的位置,键的键值。
2.备份登录档。
3.开启登录档编辑器。开始——→执行——→regedit,即打开了!
4.查询并编辑相关项和键值。
5.修改完毕后按F5重新整理登录档,验证是否修改成功,完毕。
voltmemo如何修改登录档
登陆你的QQ-》点选微博图示进入微博-》点选你的姓名——》此时你会看到修改字样,即可进行更改哦 滑鼠放在你微博名字上,就会出现下拉选单,点选设定就可以了 开启我字那边 就能找到了
如何通过修改登录档 在滑鼠右键选单上 增加语言转换功能
日本语执行.reg
CODE:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTexefileshell日本语执行]
[HKEY_CLASSES_ROOTexefileshell日本语执行mand]
@="C:\WINDOWS\AppPatch\AppLoc.exe "%1" "/L0411""
简体中文执行.reg
CODE:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTexefileshell简体中文执行]
[HKEY_CLASSES_ROOTexefileshell简体中文执行mand]
@="C:\WINDOWS\AppPatch\AppLoc.exe "%1" "/L0804""
繁体中文执行.reg
CODE:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTexefileshell繁体中文执行]
[HKEY_CLASSES_ROOTexefileshell繁体中文执行mand]
@="C:\WINDOWS\AppPatch\AppLoc.exe "%1" "/L0404""
韩国语执行.reg
CODE:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTexefileshell韩国语执行]
[HKEY_CLASSES_ROOTexefileshell韩国语执行mand]
@="C:\WINDOWS\AppPatch\AppLoc.exe "%1" "/L0412""
前些时间 无意看到的 稍作整理 贴上来的
希望对你 有点帮助
在VB 中如何修改登录档键值
'送给你一个登录档的类
.另存为IRegister.CLA档案
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "IRegister"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Private Declare Function ExpandEnvironmentStrings Lib "kernel32" Alias "ExpandEnvironmentStringsA" (ByVal lpSrc As String, ByVal lpDst As String, ByVal nSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
'Structures Needed For Registry Prototypes
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
'masks for the predefined standard aess types
Private Const SYNCHRONIZE = &H100000
Private Const READ_CONTROL = &H20000
Private Const SPECIFIC_RIGHTS_ALL = &HFFFF
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
'Registry Specific Aess Rights
Private Const KEY_EVENT = &H1
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = (KEY_READ)
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
'Open/Create Options
Private Const REG_OPTION_NON_VOLATILE = 0&
Private Const REG_OPTION_VOLATILE = &H1
'Key creation/open disposition
Private Const REG_CREATED_NEW_KEY = &H1
Private Const REG_OPENED_EXISTING_KEY = &H2
'Define severity codes
Private Const ERROR_SUCCESS = 0&
Private Const ERROR_ACCESS_DENIED = 5
Private Const ERROR_INVALID_DATA = 13&
Private Const ERROR_MORE_DATA = 234 ' dderror
Private Const ERROR_NO_MORE_ITEMS = 259
'Value Type
Private Const REG_NONE = (0) 'No value type
Private Const REG_SZ = (1) 'Unicode nul terminated string
Private Const REG_EXPAND_SZ = (2) 'Unicode nul terminated string w/enviornment var
Private Const REG_BINARY = (3) 'Free form binary
Private Const REG_DWORD = (4) '32-bit number
Private Const REG_DWORD_LITTLE_ENDIAN = (4) '32-bit number (same as REG_DWORD)
Private Const REG_DWORD_BIG_ENDIAN = (5) '32-bit number
Private Const REG_LINK = (6) 'Symbolic Link (unicode)
Private Const REG_MULTI_SZ = (7) 'Multiple Unicode strings
Private Const REG_RESOURCE_LIST = (8) 'Resource list in the resource map
Private Const REG_FULL_RESOURCE_DESCRIPTOR = (9) 'Resource list in the hardware description
Private Const REG_RESOURCE_REQUIREMENTS_LIST = (10)
'Registry Declare
Private Declare Function RegRemoveKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegRemoveValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegSetValueExStr Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Private Declare Function RegSetValueExLong Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, szData As Long, ByVal cbData As Long) As Long
Private Declare Function RegSetValueExByte Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, szData As Byte, ByVal cbData As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegQueryValueExStr Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegQueryValueExLong Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, szData As Long, ByRef lpcbData As Long) As Long
Private Declare Function RegQueryValueExByte Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, szData As Byte, ByRef lpcbData As Long) As Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, ByVal lpType As Long, ByVal lpData As Long, ByVal lpcbData As Long) As Long
Private Declare Function RegEnumValueStr Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Private Declare Function RegEnumValueLong Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long
Private Declare Function RegEnumValueByte Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
Private Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As Any) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Enum RegHeadKeyConstants
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
Public Enum RegValueTypeConstants
regNone = REG_NONE
regString = REG_SZ
regExpandString = REG_EXPAND_SZ
regBinary = REG_BINARY
regDWORD = REG_DWORD
regDWORDLittleEndian = REG_DWORD_LITTLE_ENDIAN
regDWORDBigEndian = REG_DWORD_BIG_ENDIAN
regLink = REG_LINK
regMultiString = REG_MULTI_SZ
regResourceList = REG_RESOURCE_LIST
regFullResourceDescriptor = REG_FULL_RESOURCE_DESCRIPTOR
regResourceRequirementsList = REG_RESOURCE_REQUIREMENTS_LIST
End Enum
Private CHKey As Long
Private CH_RT As Long
Private Function SwapEndian(ByVal dw As Long) As Long
CopyMemory ByVal VarPtr(SwapEndian) + 3, dw, 1
CopyMemory ByVal VarPtr(SwapEndian) + 2, ByVal VarPtr(dw) + 1, 1
CopyMemory ByVal VarPtr(SwapEndian) + 1, ByVal VarPtr(dw) + 2, 1
CopyMemory SwapEndian, ByVal VarPtr(dw) + 3, 1
End Function
Private Function ExpandEnvStr(sData As String) As String
Dim c As Long, s As String
' Get the length
s = "" ' Needed to get around Windows 95 limitation
c = ExpandEnvironmentStrings(sData, s, c)
' Expand the string
s = String$(c - 1, 0)
c = ExpandEnvironmentStrings(sData, s, c)
ExpandEnvStr = s
End Function
Private Sub CheckRegErr()
If CHKey = 0 Then
Err.Raise 1500, "Register", "未开启登录档。"
End If
End Sub
Property Get Handle() As OLE_HANDLE
Attribute Handle.VB_UserMemId = 0
Handle = CHKey
End Property
Public Function FreeRegister() As Long
If CHKey <> 0 Then
FreeRegister = RegCloseKey(CHKey)
CHKey = 0
End If
End Function
Public Function OpenRegister(hKey As RegHeadKeyConstants, Optional SubKey As String) As Long
Dim lCreate As Long, tSA As SECURITY_ATTRIBUTES
Dim rt As Long
FreeRegister
rt = RegCreateKeyEx(hKey, SubKey, 0, "", REG_OPTION_NON_VOLATILE, _
KEY_ALL_ACCESS, tSA, CHKey, lCreate)
OpenRegister = rt 'set return value
CH_RT = rt
If rt Then
Err.Raise 26001, "Registry", "开启登录档失败。"
Else
OpenRegister = True
End If
End Function
Public Function RemoveRegKey(hKey As RegHeadKeyConstants, SubKey As String) As Long
RemoveRegKey = RegRemoveKey(hKey, SubKey)
End Function
Public Function RemoveRegValue(Optional ValueName As String) As Long
CheckRegErr
RemoveRegValue = RegRemoveValue(CHKey, ValueName)
End Function
Public Function EnumValues(ByRef sKeyNames() As String, ByRef iKeyCount As Long) As Boolean
CheckRegErr
Dim lResult As Long
Dim sName As String
Dim lNameSize As Long
Dim sData As String
Dim lIndex As Long
Dim cJunk As Long
Dim cNameMax As Long
Dim ft As Currency
' Log "EnterEnumerateValues"
iKeyCount = 0
Erase sKeyNames()
lIndex = 0
lResult = CH_RT
If (lResult = ERROR_SUCCESS) Then
' Log "OpenedKey:" & m_hClassKey & "," & m_sSectionKey
lResult = RegQueryInfoKey(CHKey, "", cJunk, 0, _
cJunk, cJunk, cJunk, cJunk, _
cNameMax, cJunk, cJunk, ft)
Do While lResult = ERROR_SUCCESS
'Set buffer space
lNameSize = cNameMax + 1
sName = String$(lNameSize, 0)
If (lNameSize = 0) Then lNameSize = 1
' Log "Requesting Next Value"
'Get value name:
lResult = RegEnumValue(CHKey, lIndex, sName, lNameSize, _
0&, 0&, 0&, 0&)
' Log "RegEnumValue returned:" & lResult
If (lResult = ERROR_SUCCESS) Then
' Although in theory you can also retrieve the actual
' value and type here, I found it always (ultimately) resulted in
' a GPF, on Win95 and NT. Why? Can anyone help?
sName = Left$(sName, lNameSize)
' Log "Enumerated value:" & sName
iKeyCount = iKeyCount + 1
ReDim Preserve sKeyNames(1 To iKeyCount) As String
sKeyNames(iKeyCount) = sName
End If
lIndex = lIndex + 1
Loop
End If
' Log "Exit Enumerate Values"
EnumValues = True
Exit Function
EnumValuesError:
Err.Raise vbObjectError + 1048 + 26003, "Registry", Err.Description
Exit Function
End Function
Public Function EnumSections(ByRef sSect() As String, ByRef iSectCount As Long) As Boolean
CheckRegErr
Dim lResult As Long
Dim dwReserved As Long
Dim szBuffer As String
Dim lBuffSize As Long
Dim lIndex As Long
Dim lType As Long
Dim sCompKey As String
Dim iPos As Long
On Error GoTo EnumSectionsError
iSectCount = 0
Erase sSect
'
lIndex = 0
lResult = CH_RT
Do While lResult = ERROR_SUCCESS
'Set buffer space
szBuffer = String$(255, 0)
lBuffSize = Len(szBuffer)
'Get next value
lResult = RegEnumKey(CHKey, lIndex, szBuffer, lBuffSize)
If (lResult = ERROR_SUCCESS) Then
iSectCount = iSectCount + 1
ReDim Preserve sSect(1 To iSectCount) As String
iPos = InStr(szBuffer, Chr$(0))
If (iPos > 0) Then
sSect(iSectCount) = Left(szBuffer, iPos - 1)
Else
sSect(iSectCount) = Left(szBuffer, lBuffSize)
End If
End If
lIndex = lIndex + 1
Loop
EnumSections = True
Exit Function
EnumSectionsError:
Err.Raise vbObjectError + 1048 + 26002, "Registry", Err.Description
Exit Function
End Function
Public Function ValueExist(Optional ValueName As String) As Boolean
Dim lenData As Long, rt As Long, rgtype As Long
rt = RegQueryValueEx(CHKey, ValueName, 0, rgtype, ByVal vbNullString, lenData)
If rt = 0 Then
ValueExist = True
Else
ValueExist = False
End If
End Function
Public Function ReadRegType(Optional ValueName As String) As RegValueTypeConstants
CheckRegErr
Dim l As Long, rt As Long, rgtype As Long
rt = RegQueryValueEx(CHKey, ValueName, 0, rgtype, ByVal vbNullString, l)
ReadRegType = rgtype
End Function
Public Function ReadRegValue(Optional ValueName As String, Optional ValueType As RegValueTypeConstants)
CheckRegErr
Dim lenData As Long, rt As Long, rgtype As Long
Dim Str As String, dw As Long, bin() As Byte
rt = RegQueryValueEx(CHKey, ValueName, 0, rgtype, ByVal vbNullString, lenData)
If rt And rt <> ERROR_MORE_DATA Then
Err.Raise rt, "Register", "无法读取。" & vbCrLf & "错误号:" & rt
Exit Function
End If
ValueType = rgtype ' return the value's type
Select Case rgtype
Case REG_SZ, REG_MULTI_SZ
Str = String(lenData, Chr(0))
rt = RegQueryValueExStr(CHKey, ValueName, 0, rgtype, ByVal Str, lenData)
ReadRegValue = Left(Str, lenData - 1)
Case REG_EXPAND_SZ
Str = String(lenData, Chr(0))
rt = RegQueryValueExStr(CHKey, ValueName, 0, rgtype, ByVal Str, lenData)
ReadRegValue = ExpandEnvStr(Left(Str, lenData - 1))
Case REG_DWORD, REG_DWORD_LITTLE_ENDIAN
rt = RegQueryValueExLong(CHKey, ValueName, 0, rgtype, ByVal dw, lenData)
ReadRegValue = CLng(dw)
Case REG_DWORD_BIG_ENDIAN
rt = RegQueryValueExLong(CHKey, ValueName, 0, rgtype, ByVal dw, lenData)
ReadRegValue = SwapEndian(dw)
Case REG_BINARY
ReDim bin(lenData)
rt = RegQueryValueExByte(CHKey, ValueName, 0&, rgtype, bin(0), lenData)
ReadRegValue = bin
End Select
End Function
Public Function WriteRegValue(Optional ValueName As String, Optional vValue, Optional ValueType As RegValueTypeConstants = REG_SZ) As Long
CheckRegErr
Dim ordType As Long, c As Long, e As Long
Select Case ValueType
Case REG_BINARY
If (varType(vValue) = vbArray + vbByte) Then
Dim ab() As Byte
ab = vValue
ordType = REG_BINARY
c = UBound(ab) - LBound(ab) - 1
e = RegSetValueExByte(CHKey, ValueName, 0&, ordType, ab(0), c)
Else
Err.Raise 26001
End If
Case REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_DWORD_LITTLE_ENDIAN
If (varType(vValue) = vbInteger) Or (varType(vValue) = vbLong) Then
Dim i As Long
i = vValue
ordType = REG_DWORD
e = RegSetValueExLong(CHKey, ValueName, 0&, ordType, i, 4)
End If
Case REG_SZ, REG_EXPAND_SZ
Dim s As String, iPos As Long
s = vValue
ordType = REG_SZ
' Assume anything with o non-adjacent percents is expanded string
iPos = InStr(s, "%")
If iPos Then
If InStr(iPos + 2, s, "%") Then ordType = REG_EXPAND_SZ
End If
c = Len(s) + 1
e = RegSetValueExStr(CHKey, ValueName, 0&, ordType, s, c)
' User should convert to a patible type before calling
Case Else
e = ERROR_INVALID_DATA
End Select
End Function
CMD下如何修改登录档?
十六进位制的你要自己把它转化成十进位制,然后再新增
像你这个1000000转化成十进位制之后就是
16777216
要新增你这条登录档项的命令就是
reg add "HKEY_CURRENT_USERSofareMicrosoftWindowsCurrentVersionPoliciesExplorer" /v ClearRecentDocsOnExit /t reg_dword /d 16777216 /f
在 vb中 如何修改登录档
使用 WMI 在 HKLMSOFTWARESystem Admin Scripting Guide 下建立字串和 DWORD 值。
指令码程式码
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" &_
strComputer & "rootdefault:StdRegProv")
strKeyPath = "SOFTWARESystem Admin Scripting Guide"
strValueName = "String Value Name"
strValue = "string value"
oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "DWORD Value Name"
dwValue = 82
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue