vbs 读写注册表之系统启动项添加与删除

核心vbs代码

'变量定义
Dim writeName,writeValue,fileName,regLoaction,regApp

'创建注册表编辑器对象
Set regApp=WScript.CreateObject("WScript.Shell")

'配置文件名
fileName="FullScan.txt"
'输入键名
writeName="xiaoqiang"
'输入键值
writeValue="test"

'************************脚本运行区间********************************

'根据配置文件获取注册表路径数组
regLoaction=getRegPathArray(getFileText(fileName))

'写入注册表
write regLoaction,writeName,writeValue

'读取写入的键值 生成并生成结果文件
read regLoaction,writeName

'************************函数定义********************************
'读注册表
Function read(regLoaction,writeName)
 Dim returnStrArray(),j
 j=0
 If writeName="" or writeValue="" then
  msgbox "错误!!请输入键名和键值"
 else
  for i=0 to ubound(regLoaction)
 ReDim Preserve returnStrArray(j)
   regPath=regLoaction(i)&"\"&writeName
   returnStrArray(j)=regPath&"? "&regApp.RegRead(regPath)
   j=j+1
  Next
 End if
 writeResult returnStrArray
End Function

'写入注册表
Function write(regLoaction,writeName,writeValue)
 If writeName="" or writeValue="" then
  msgbox "错误!!请输入键名和键值"
 else
  for i=0 to ubound(regLoaction)
 regApp.RegWrite regLoaction(i)&"\"&writeName,writeValue
  Next
 End if
End Function

'输出结果文件
sub writeResult(contentArray)
 Const ForReading = 1, ForWriting = 2
 Dim fso,f,returnStrArray(),i
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set f = fso.OpenTextFile("result.txt", 2,true)
 for i=0 to ubound(contentArray)
 f.writeline(contentArray(i))
 Next
 f.close()
End Sub

'得到注册表路径数组
Function getRegPathArray(sourceArray)
 Dim head,returnStrArray(),j
 j=0
 for i=0 to ubound(sourceArray)
  If sourceArray(i)="[HKEY_LOCAL_MACHINE]" then
 head="HKLM"
  elseif sourceArray(i)="[HKEY_USERS]" then
   head="HKEY_USERS\.DEFAULT"
  elseif sourceArray(i)="[HKEY_CURRENT_USER]" then
   head="HKCU"
  elseif sourceArray(i)="[HKEY_CLASSES_ROOT]" then
   head="HKCR"
  elseif sourceArray(i)="[HKEY_CURRENT_CONFIG]" then
   head="HKEY_CURRENT_CONFIG"
  else
   ReDim Preserve returnStrArray(j)
   str=head&split(sourceArray(i),"=")(1)
   returnStrArray(j)=str
   j=j+1
  End If
 Next
 getRegPathArray=returnStrArray
End Function

'得到文件内容存入数组
Function getFileText(fileName)
 Const ForReading = 1, ForWriting = 2
 Dim fso,f,returnStrArray(),i
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set f = fso.OpenTextFile(fileName, 1)
 i=0
 do while f.atendofstream<>true
  ReDim Preserve returnStrArray(i)
  returnStrArray(i)=f.readline()
  i=i+1
 loop
 f.close()
 getFileText=returnStrArray
End Function

//配置文件

FullScan.txt

[HKEY_LOCAL_MACHINE]
1=\Software\Microsoft\Windows\CurrentVersion\Run
2=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\
3=\Software\Microsoft\Windows\CurrentVersion\RunOnce\
4=\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\
5=\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
6=\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell\
7=\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\
8=\Software\Policies\Microsoft\Windows\System\Scripts\
[HKEY_CURRENT_USER]
1=\Software\Microsoft\Windows\CurrentVersion\Run
2=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\
3=\Software\Microsoft\Windows\CurrentVersion\RunOnce\
4=\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\
5=\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
6=\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell\
7=\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\
8=\Software\Policies\Microsoft\Windows\System\Scripts\

运行后得到result.txt

HKLM\Software\Microsoft\Windows\CurrentVersion\Run\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell\\xiaoqiang? test
HKLM\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\\xiaoqiang? test
HKLM\Software\Policies\Microsoft\Windows\System\Scripts\\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell\\xiaoqiang? test
HKCU\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\\xiaoqiang? test
HKCU\Software\Policies\Microsoft\Windows\System\Scripts\\xiaoqiang? test

注册表中的值

以下是我们小编补充

运行后就会发现在系统开始自动运行的一些启动项加入了如上值,所以不建议普通用户运行。

既然批量添加那么也可以批量删除

将上面的vbs代码中的

regApp.RegWrite regLoaction(i)&"\"&writeName,writeValue

替换为

regApp.RegDelete regLoaction(i)&"\"&writeName

发现直接运行不行,其实注册表的删除需要用管理员权限才可以。

怕有些新手不知道如何管理员权限运行vbs

其实右键cmd中看到 以管理员权限运行 打开 dos窗口,然后将vbs文件拖到这个dos窗口里面,回车运行即可

然后拖拉

回车后发现,并没有提示任何错误信息,从注册表中看到,确定这个字段已经没了。完全解决。

(0)

相关推荐

  • vbs 读写注册表之系统启动项添加与删除

    核心vbs代码 '变量定义 Dim writeName,writeValue,fileName,regLoaction,regApp '创建注册表编辑器对象 Set regApp=WScript.CreateObject("WScript.Shell") '配置文件名 fileName="FullScan.txt" '输入键名 writeName="xiaoqiang" '输入键值 writeValue="test" '***

  • 用vbs列出注册表中 Run 项中的所有项目

    问: 您好,脚本专家!如何列出注册表中 Run 项中的所有项目? -- JW 答: 您好,JW.如何列出注册表中 Run 项中的所有项目?坦白地讲,我们不打算告诉您.真的很抱歉.不是因为我们不喜欢您,而是因为我们认为我们有一个更好的答案给您.(如果我们错了,那好,我们只能说这不会是第一次.)  由于您对 Run 项感兴趣,因此我们假定您真正想知道的是如何找出哪些程序被配置为在每次 Windows 启动时自动运行.您一定可以从 Run 项中读取到该信息,不要对此产生怀疑.实际上,您可以从 Run 

  • 浅谈Java读写注册表的方式Preferences与jRegistry

    本文研究的主要是Java 读写注册表的两种方式 Preferences 与 jRegistry的相关内容,具体介绍如下. 由于java程序是"write once, run everywhere",用java读写注册表,那程序的跨平台性就差了.java对注册表的操作,在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现:然而jdk1.4之后提供的prefs包可以操作windows注册表,不过定死了root只在SOFTWARE/JavaSoft/prefs下,估计也是出于这种两难

  • bat生成vbs通过注册表禁用或启用USB端口的代码

    当然,你也可以完全使用BAT操作注册表来完成修改注册表的键值的目的,具体方式留以后完善,如果你有好的想法,记得告诉我哦! USB_Disable.bat文件代码: 复制代码 代码如下: @echo off echo On Error Resume next>USB_Disable.vbs echo Dim WshShell>>USB_Disable.vbs echo Set WshShell = WScript.CreateObject("WScript.Shell"

  • 用vbs操作注册表实例代码

    打开或关闭CMD: Dim WSHShell, r, m, v, t, g Dim i On Error Resume Next Set WSHShell=WScript.CreateObject("WScript.Shell") v="HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\system\DisableCMD" i="REG_DWORD" t="命令提示窗口开关&qu

  • 分享关于JAVA 中使用Preferences读写注册表时要注意的地方

    要注意的只有一个地方,那就是键名或者项名不要包含大写字母,否则读不到数据. 代码是这样的: 复制代码 代码如下: Preferences preferences = Preferences.systemRoot();String strRegTime = preferences.get("regTime", ""); 注册表中是这样的 不论怎么改都读不到regTime的值.后来想到现在代码中把值写进去看看是什么样的,代码如下 复制代码 代码如下: Preferenc

  • c#读写注册表示例分享

    复制代码 代码如下: //写注册表RegistryKey regWrite;//往HKEY_CURRENT_USER主键里的Software子键下写一个名为"Test"的子键//如果Test子键已经存在系统会自动覆盖它regWrite = Registry.CurrentUser.CreateSubKey("Software\\Test");//往Test子键里添两条数据项,一条名为"Name",另一条名为"Sex"//值分别

  • C/C++读写注册表中二进制数据(代码示例)

    1.RegOpenKeyEx 函数: 原形: LONG RegOpenKeyEx(               HKEY hKey,     // 要打开主键名               LPCTSTR lpSubKey, // 需要打开的子键或路径               DWORD ulOptions,  // 保留,为0              REGSAM samDesired, // 操作权限标志               PHKEY phkResult  // 指向你打开键

  • 用vbs实现注册表开关的脚本

    Dim WSHShell,r,M,v,t,g,i On Error Resume Next Set WSHShell=WScript.CreateObject("WScript.Shell") v="HKCU\Software\Microsoft\Windows\CurrentVersion\ Policies\System\DisableRegistryTools" i="REG_DWORD" t="注册表开关" r=WSH

  • C#读写注册表的思路及代码

    NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey.这两个类都是密封类不允许被继承.下面我们分别来介绍这两个类.Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有)分别是:  Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 Registry.LocalMachine

随机推荐