标题: [注册表类] 批处理怎样获取SID后修改reg文件中的SID并导入注册表? [打印本页]
作者: woshiqinxue 时间: 2011-2-14 15:21 标题: 批处理怎样获取SID后修改reg文件中的SID并导入注册表?
@echo off
cls
for /f "tokens=*" %%a in ('REG QUERY "HKEY_USERS" /s /v USERNAME ^| find /i "Volatile Environment"') do (
for /f "tokens=*" %%1 in ('REG QUERY "%%a" /v USERNAME ^| find /i "%username%"') do (
::echo %%1
SET "SID=%%a"
)
)
for /f "tokens=1-4,* delims=\" %%i in ('echo %SID%') do (
SET "SID=%%j"
)
echo Set fso = CreateObject("scripting.filesystemobject")>>a.vbs
echo Set file = fso.OpenTextFile("my.reg", 1, True)>>a.vbs
echo text = file.ReadAll>>a.vbs
echo file.Close>>a.vbs
echo text = Replace(text, "S-1-5-21-842925246-1935655697-725345543-500", "%SID%")>>a.vbs
echo Set file = fso.OpenTextFile("my.reg", 2, True)>>a.vbs
echo file.Write text>>a.vbs
echo file.Close>>a.vbs
wscript.exe a.vbs
regedit /s my.reg
pause
exit
朋友帮忙写的 但是这个只能在WIN7下使用 XP下使用不了。说是:“错误:命令行参数过多”请问该怎么解决。
作者: Batcher 时间: 2011-2-14 22:24
把@echo off删掉,看看执行过程就知道哪里错了。
作者: woshiqinxue 时间: 2011-2-15 09:56
现在知道是 :
for /f "tokens=*" %%a in ('REG QUERY "HKEY_USERS" /s /v USERNAME ^| find /i "Volatile Environment"') do (
for /f "tokens=*" %%1 in ('REG QUERY "%%a" /v USERNAME ^| find /i "%username%"') do (
::echo %%1
SET "SID=%%a"
)
)
这个的参数过多。请问有什么解决的办法吗?
我以前没写过批处理,所以不太懂。
我发的批处理在WIN7上运行是不报错的,但是到XP下就不可以了。
作者: bluesnan 时间: 2011-5-11 21:43
REG QUERY "HKEY_USERS" /s /v USERNAME
/s 和/v参数不能同时使用
作者: hanyeguxing 时间: 2011-5-11 22:30
本帖最后由 hanyeguxing 于 2011-5-11 22:48 编辑
1,xp下,reg query 不允许 /v或/ve与/s同时使用
2,如果要用reg query 返回sid,则:- for /f "tokens=6-9 delims=-_" %%a in ('reg query HKU') do if not "%%d"=="" set SID=S-1-5-21-%%a-%%b-%%c-%%d
复制代码
或使用wmic:- for /f "delims=" %%a in ('wmic userAccount where "Name='%userName%'" get SID /value') do >nul set %%a
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |