访问注册表键值

在PowerShell中,用户可以通过类似于HKCU:(作为HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虚拟驱动器访问注册表键值。

如:Dir Registry::HKEY_LOCAL_MACHINE\Software

通过这种方式用户可以很容易的复制、粘贴注册表内的键值,用户可以通过下面的命令获取已经注册的文件后缀:

dir Registry::HKEY_CLASSES_ROOT\.* -name | Sort-Object

读取注册表键值

在PowerShell中,用户能够以虚拟驱动器的形式来处理注册表的内容

下面的Get-RegidtryValues函数列举存储在一个注册表键值下的所有键值,完整代码如下所示:

function Get-RegistryValues($key) { 
                 (Get-Item $key).GetValueNames() 
}

Get-RegistryValues HKLM:\Software\Microsoft\Windows\Currentversion

Get-RegistryValue读取任意注册表键值并返回其内容,完整代码如下所示:

function Get-RegistryValue($key, $value) { 
                  (Get-ItemProperty $key $value).$value 

Get-RegistryValue ' HKLM:\Software\Microsoft\Windows\Currentversion' SM_GamesName

写入注册表键值

添加或修改注册表键值在PowerShell中也是很方便的就可以完成的,下面创建名为Set-RegistryValue函数用来操作注册表键值,以下是完整的代码:

function Set-RegistryValue($key, $name, $value, $type="String") { 
  if ((Test-Path $key) -eq $false) { md $key | Out-Null } 
       Set-ItemProperty $key $name $value -type $type 
  } 
   Set-RegistryValue HKCU:\Software\TestABC myValue Hello 
   Set-RegistryValue HKCU:\Software\TestABC myValue 12 Dword 
   Set-RegistryValue HKCU:\Software\TestABC myValue ([Byte[]][Char[]]"Hello") Binary

移除注册表键值

通过Remove-Item删除目标注册表键,函数Remove-RegistryKey的完整代码如下所示:

function Remove-RegistryKey($key) { 
Remove-Item $key -Force 
}

通过Remove-ItemProperty函数删除注册表值,完整的代码如下所示:

function Remove-RegistryValue($key, $value) { 
Remove-ItemProperty $key $value 
}

-------------powershell注册表相关命令(可能不全)------------------
这些个命令的具体用法,请看手册
get-childitem 即dir
new-item              新建(注册表)目录项
remove-item           删除目录项
rename-item           改名目录项
copy-item                复制目录树
move-item             移动目录树

New-ItemProperty                        新建某键,并赋值。即新建键值对
remove-itemproperty                        删除注册表 某键值对
Copy-ItemProperty                        把键和值,从某注册表路径复制到另一个。
Move-ItemProperty                        移动键的位置,键值不变
Rename-ItemProperty                           更改键名,键值不变
Clear-ItemProperty                        清空某键的值,但键名不变

Get-ItemProperty                            注册表键值  -> powershell变量值 ,即读取
set-itemproperty                            powershell变量值 -> 注册表键值  ,即写入

值的类型:
String=字符串
MultiString=多字符串
ExpandString=可扩充字符串
Binary=二进制值 
DWord=32位值
QWord=64位值

get-acl 显示注册表某目录的安全描述符
set-acl 更改注册表项的安全描述符。
注意:此二条命令只对,注册表目录有效。无法在注册表的键和值上设置权限。

-------------------------例子-------------------------
目的:
列表HKEY_CURRENT_USER
cd    hkcu: 回车
dir    回车

目的:
建立一个键名为powershella,值为powershellb的键值对。类型为string
New-ItemProperty -path hkcu: -name powershella -value powershellb -PropertyType string

目的:
建立一个键名为powershellc,值为【空】的键。类型为string
New-ItemProperty -path hkcu: -name powershellc -value  "" -PropertyType string

目的:
读取powershella的值,进入变量$mmmm
$mmmm = (Get-ItemProperty -path hkcu: -name powershella).powershella

目的:
把注册表 hkcu:powershella 的值,设置成变量$nnnn的值
$nnnn = "chuanjiaoshi"
set-ItemProperty -path hkcu: -name powershella -value $nnnn

目的:
获取hkcu:\software目录的权限
get-acl hkcu:\software

使用PowerShell读、写、删除注册表键值的更多相关文章

  1. 使用Windows命令行reg控制注册表键值

    使用Windows命令行reg控制注册表键值 引言 熟悉Windows操作系统的朋友可能都知道,Windows操作系统下的注册表相当于系统的数据库 ,部分软件将自己的配置信息都放在注册表里面,而注册表 ...

  2. 通过程序修改注册表键值来达到修改IE配置参数的目的

    通过程序修改注册表键值来达到修改IE配置参数的目的 使用IE访问应用程序或网页时经常需要设置一些选项(工具-Internet 选项),比如为了避免缓存网页,把工具-Internet选项-常规选项卡-I ...

  3. 注册表键值明明存在OpenSubKey始终返回null,解决方案

    先上代码及实例 RegistryKey rsg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Macromedia\FlashPaper Pri ...

  4. Ubuntu - Dconf 注册表键值修改参考表

    gsettings reset org.gnome.desktop.wm.preferences theme默认gnomegsettings set org.gnome.desktop.interfa ...

  5. 自己动手写reg注册表文件

    自己动手写reg注册表文件 2015-01-12 20:23 1161人阅读 评论(1) 收藏 举报  分类: 玩转Windows应用层编程(12)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  6. Win64 驱动内核编程-32.枚举与删除注册表回调

    枚举与删除注册表回调 注册表回调是一个监控注册表读写的回调,它的效果非常明显,一个回调能实现在SSDT 上 HOOK 十几个 API 的效果.部分游戏保护还会在注册表回调上做功夫,监控 service ...

  7. 我的天$删除注册表$安装mysql最后一步不能启动服务的解决办法

    我是照着参考资料一步一步删除的,只是我的Win7 64位的电脑比较犟,硬是要我重启电脑才能成功!强烈建议最好是重启电脑再装! 使用MySQL都有过重装的经历,要是重装MySQL基本都是在最后一步通不过 ...

  8. mysql 第一课 win7艰难的配置与删除注册表重新安装

    mysql 这个安装一定要慎重!慎重!慎重! 重要的事情说三遍.. 不会的一定要按步骤来~出错了真的很难受. 详细教程 -->  https://jingyan.baidu.com/album/ ...

  9. 卸载oracle删除注册表脚本

    一.前言 在我们操作系统中,有时要卸载oracle数据库,每一次都要去删除win下的注册表,为了方便删除注册表的信息,下面通过一种删除注册表快捷的脚本. 二.脚本信息 Windows Registry ...

随机推荐

  1. http server v0.1_http_reponse.c

    #include <string.h> #include <sys/stat.h> #include <sys/mman.h> #include <fcntl ...

  2. codeforces C. DZY Loves Sequences

    http://codeforces.com/contest/447/problem/C 题意:给你n个数的序列,然后让你改变其中的一个数,求得最长上升连续序列的长度值. 思路:先从左边开始求出连续递增 ...

  3. win7电脑自动关机怎么设置

    WIN7系统自带了关机工具的,下面是步骤 1.“开始”-右键点击“计算机”选择“管理”,在左侧界面中选择“任务计划程序”. 2.在右侧界面中选择“创建基本任务”(向导式创建任务,推荐新手使用)或者“创 ...

  4. c++调用ffmpeg

    在自己编译好ffmpeg库后,已经迫不及待的想尝试用vs2010来调用ffmpeg,在开始调用的时候遇到了些问题,但还是解决了. 配置vs 1.右键工程-属性,在然后选择 配置属性 -> C/C ...

  5. MySQL的if,case语句

    IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为exp ...

  6. C模块划分

    模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求.C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行 ...

  7. 第1章(三)安装VS2015和Xamarin For VS

    原文 第1章(三)安装VS2015和Xamarin For VS 操作系统:Win7  64位(sp1或更高版本) 1.安装VS2015 VS2015简体中文企业版:vs2015.ent_chs.is ...

  8. ServiceStack.Redis 之 IRedisTypedClient

    IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...

  9. ExecuteScalar的学习日志

    一:今天写关于调用sqlhelper类的时候出现了一个异常,我仔细观察没有错误啊,怎么回事:看图 二:出现错误时id的结果是0,也就是说ExcuteScalar的结果是null,明明数据库里有多行数据 ...

  10. java基础(七)面向对象(二)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...