[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 批处理怎样获取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下使用不了。说是:“错误:命令行参数过多”请问该怎么解决。

把@echo off删掉,看看执行过程就知道哪里错了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

现在知道是 :
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下就不可以了。

TOP

REG QUERY "HKEY_USERS" /s /v USERNAME

/s 和/v参数不能同时使用

TOP

本帖最后由 hanyeguxing 于 2011-5-11 22:48 编辑

1,xp下,reg query 不允许 /v或/ve与/s同时使用
2,如果要用reg query 返回sid,则:
  1. 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:
  1. for /f "delims=" %%a in ('wmic userAccount where "Name='%userName%'" get SID /value') do >nul set %%a
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表