如何用AU3如何实现类似reg copy命令的操作[已解决]
本帖最后由 仙乃日 于 2010-7-11 20:38 编辑如何用AU3如何实现类似reg copy命令的操作?
命令:reg copy
将当前的注册表或远程计算机上的注册表拷贝到一个新的位置(或计算机上)。 reg copy [\\machine\]sourcekey [\\machine\]destinationkey
甲例子:reg copy hklm\software\myco\myapp hklm\software\myco\savemyapp 可以自己 写个 函数, 先读取 在写入啊 可以自己 写个 函数, 先读取 在写入啊
kylinpoet 发表于 2010-7-1 13:51 http://www.autoitx.com/images/common/back.gif
没这么麻烦吧........................$a="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
runwait(@comspec & " /c regedit /e"&" "&"d:\11.reg"&" "& $a,"",@sw_hide) 为了方便测试,故用$a 来导出RUN 部分!!!! 上面仅实现了本机吧?楼主的意思是含“远程”另外一台电脑。 自己写个调用dos命令的函数,方便调用 Func _RegCopy($SourceKey, $DestinationKey, $flag = '/s /f')
;$SourceKey:源键|$DestinationKey:目标键|这两个参数前面可选包含远程计算机名(\\计算机名\HKLM\...)
Local $run = RunWait('REG COPY "' & $SourceKey & '" "' & $DestinationKey & '" ' & $flag, '', 0)
If Not $run Then Return 1 ;成功
Return 0 ;失败
EndFunc ;==>_regexplort 回复 6# afan
楼上的代码运行不成功:_regcopy("\\Pc-655f20300968\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","d:\1.reg")
Func _RegCopy($SourceKey, $DestinationKey, $flag = '/s /f')
;$SourceKey:源键|$DestinationKey:目标键|这两个参数前面可选包含远程计算机名(\\计算机名\HKLM\...)
Local $run = RunWait('REG COPY "' & $SourceKey & '" "' & $DestinationKey & '" ' & $flag, '', 0)
If Not $run Then Return 1 ;成功
Return 0 ;失败
EndFunc ;==>_regexplort下面是偶的代码, 首先远程机能正常访问本机,同时建一个可读写的共享文件夹!!最后在远程机运行如下代码:
注:这是偶测试的代码--------------成功!!!$a="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
runwait(@comspec & " /c regedit /e"&" "&"\\计算机名\临时文件\11.reg"&" "& $a,"",@sw_hide) 本帖最后由 afan 于 2010-7-1 20:42 编辑
回复 7# lchl0588
晕~ 你自己运用错了~ 这是 reg copy ,不是你的 regedit /e 导出,两个命令,两个概念,两种结果
正确的格式是:
_RegCopy('\\计算机名\HKLM\...', '\\计算机名\HKLM\...') ;远程到远程
或者
_RegCopy('HKLM\...', '\\计算机名\HKLM\...') ;本机到远程
或者
_RegCopy('HKLM\...', 'HKLM\...') ;本机到本机
或者
_RegCopy('\\计算机名\HKLM\...', 'HKLM\...') ;远程到本机 本帖最后由 lchl0588 于 2010-7-1 20:52 编辑
回复 8# afan 回复 9# lchl0588
这个应该属于远程连接或权限的问题了
你直接用 dos 的 reg copy 试试,结果肯定是一样的 是想使用纯AU3来实现reg.exe的功能。如:reg load
Func _REGLOADHIVE($SFILE, $SKEY)
Local $AVARRAY = SPLIT_SROOTKEY($SKEY)
Local $HKEY = REGCONNECTREGISTRY($AVARRAY, $AVARRAY)
Local $AVCURR = [[$SE_RESTORE_NAME, $SE_PRIVILEGE_ENABLED],[$SE_BACKUP_NAME, $SE_PRIVILEGE_ENABLED]]
Local $AVPREV = _SETPRIVILEGE($AVCURR)
Local $AVRLH = DllCall("Advapi32.dll", "long", "RegLoadKey", "hwnd", $HKEY, "str", $AVARRAY, "str", $SFILE)
_SETPRIVILEGE($AVPREV)
REGCLOSEKEY($HKEY)
Return SetError($AVRLH, 0, Number($AVRLH = 0))
EndFunc ;==>_REGLOADHIVE 学习,顶起来
页:
[1]