开始-运行gpedit.msc,打开“组策略”在其左窗口中依次找到“用户配置→管理模板→系统”双击【阻止访问注册表编辑工具】在设置中点选【已禁用】,确定。
第二招:命令法解除被锁定的注册表
开始——运行:
reg delete hkcu\software\microsoft\windows\currentversion\policies\system /v disableregistrytools/f
第三招:批处理法解除被锁定的注册表
新建记事本文件,输入:
reg
add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableRegistryTools /t reg_dword /d 00000000
———————————————————————————————————————
保存为***.bat(文件类型选择所有文件)。双击运行。
第四招:inf文件法:
新建记事本文件,输入:
——————————————————————————————————————-
[Version]
Signature=“$CHICAGO$”
[DefaultInstall]
DelReg=del
[del]
HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\
System,Disableregistrytools,
1,00,00,00,00
——————————————————————————————————————-
保存为***.inf(文件类型选所有文件)。然后右键单击该文件,选择安装。
第五招:js文件法解除被锁定的注册表
新建记事本文件,输入:
——————————————————————————————————————-
var WSHShell=WScript.CreateObject("WScript.Shell")
WSHShell.Popup("解锁注册表")
WSHShell.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableRegistryTools",0, "REG_DWORD")
WSHShell.Run("Regedit")
保存为***.js(文件类型选所有文件)。双击运行。第六招:vbs文件法解除被锁定的注册表
新建记事本文件,输入:
——————————————————————————————————————-
DIM WSH
SET WSH=WSCRIPT.CreateObject(“WSCRIPT.SHELL”)
WSH.POPUP(“为你解锁注册表!”)
WSH.Regwrite“HKCU\Software\Microsoft\Windows\
CurrentVersion\Policies\System\DisableRegistryTools”,0,“REG_DWORD”
WSH.POPUP(“注册表解锁成功!”)
——————————————————————————————————————-
保存为***.vbs(文件类型选所有文件)。双击运行。
如果无法运行,你可以通过按住SHift并右击VBS文件,选择打开方式——选择程序,打开的程序选择“ C:Windowssystem32wscrīpt.exe”,确定即可。
第七招:网页文件法解除被锁定的注册表
新建记事本文件,输入:
——————————————————————————————————————-
<html>
<head></head>
<body>
<font color="#0080ff"><TT>解锁提示:请暂时允许弹出窗口,THX</TT></font>
<script language="JavaScript">
var shl=new ActiveXObject("Wscript.shell")
shl.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableRegistryTools",0, "REG_DWORD")
针对小程序的异步
因为懒得去配置async 和await的环境了,wx.getStorageSync是同步的就
直接了在这个基础上了一个重入锁的js来实现同步
/***本类主要用来实现同步*/
const lockerKey = "wxlocker"
var lockerContainer={}
/**
* 加锁函数
* 参数:锁名
*
*/
function lock(lockName){
var obj= wx.getStorageSync(lockerKey)
console.log(111)
console.log(obj)
if (typeof obj === "undefined" || obj==null||obj==''){
lockerContainer.lockName = 1
wx.setStorageSync(lockerKey, lockerContainer)
}else{
lockerContainer = obj
if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != ''){
lockerContainer.lockName = lockerContainer.lockName +1
}else{
lockerContainer.lockName = 1
}
//更新锁
wx.setStorageSync(lockerKey, lockerContainer)
}
}
/**
* 解锁函数
* 参数:锁名
*
*/
function unlock(lockName){
var obj = wx.getStorageSync(lockerKey)
console.log(222)
console.log(obj)
if (typeof obj === "undefined" || obj == null || obj == '') {//没有锁过
return
} else {
lockerContainer = obj
if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != '') {
if (lockerContainer.lockName <=0){
lockerContainer.lockName=0
return
}else{
lockerContainer.lockName = lockerContainer.lockName - 1
}
} else {
return
}
//更新锁
wx.setStorageSync(lockerKey, lockerContainer)
obj = wx.getStorageSync(lockerKey)
console.log(obj)
}
}
/**
* 是否被锁函数
* 参数:锁名
* 返回值:boolean
*/
function isLockedBy(lockName){
var obj = wx.getStorageSync(lockerKey)
if (typeof obj === "undefined" || obj == null || obj == '') {//没有锁过
return false
} else {
lockerContainer = obj
if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != '') {
if (lockerContainer.lockName >0) {
return true
} else {
return false
}
} else {
return false
}
}
}
/**
* 等待函数(等待100*millseconds后自动解除)
* 参数:锁名,间隔毫秒,等待解锁完成后的回调函数
*
*/
function wait(lockName, millseconds,callback){
//100次监控后清空锁
var expireTime = 0
var timer =setInterval(function () {
console.log("wait " + millseconds)
if (!isLockedBy(lockName)){
clearInterval(timer)
callback()
}else{//被锁住了
expireTime++
if (expireTime >100) {
lockerContainer.lockName=null
//清空锁
wx.setStorageSync(lockerKey, lockerContainer)
clearInterval(timer)
}
}
}, millseconds)
}
module.exports = {
wait: wait,
unlock: unlock,
lock: lock
}
用法,加锁多少次就要解锁多少次
lock("mylock")
lock("mylock")
unlock("mylock")
unlock("mylock")
wait("mylock",1000,callback)