Board logo

标题: [已结]批处理删除所有分区的默认共享 [打印本页]

作者: chineselgs     时间: 2006-6-9 18:47    标题: [已结]批处理删除所有分区的默认共享

请帮我解释下面的批处理的每个命令的意思:

net share c$ /del
net share d$ /del
net share e$ /del
net share f$ /del
net share admin$ /del
net share ipc$ /del
del c:\winnt\logo1_.exe


谢谢!!!

[ Last edited by willsort on 2006-6-14 at 17:08 ]
作者: Scott0902     时间: 2006-6-9 19:04
关闭NT默认服务,最后删除logo1_.exe
作者: chineselgs     时间: 2006-6-9 19:46
谢谢啦!!!
作者: namejm     时间: 2006-6-9 19:50
  其实楼主所帖的脚本并不能删除所有分区的默认共享,并且有可能删不掉ipc$共享,更要命的是,还有可能在下次启动的时候自动重新生成默认的admin$共享。
  下面帖一个经过本人注释过和小小改动过的脚本出来,楼主可以对比一下。
@echo off
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
::     先列举存在的分区,然后再逐个删除以分区名命名的共享;
::     通过修改注册表防止admin$共享在下次开机时重新加载;
::     IPC$共享需要administritor权限才能成功删除
::
::                             jm 改动于 2006-5-12
::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

title 默认共享删除器
echo.
echo ------------------------------------------------------
echo.
echo 开始删除每个分区下的默认共享.
echo.
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @(
    if exist %%a:\nul (
        net share %%a$ /delete>nul 2>nul && echo 成功删除名为 %%a$ 的默认共享 || echo 名为 %%a$ 的默认共享不存在
    )
)
net share admin$ /delete>nul 2>nul && echo 成功删除名为 admin$ 的默认共享 || echo 名为 admin$ 的默认共享不存在
echo.
echo ------------------------------------------------------
echo.
net stop Server>nul 2>nul && echo Server服务已停止.
net start Server>nul 2>nul && echo Server服务已启动.
echo.
echo ------------------------------------------------------
echo.
echo 修改注册表以更改系统默认设置.
echo.
echo 正在创建注册表文件.
echo Windows Registry Editor Version 5.00> c:\delshare.reg
:: 通过注册表禁止Admin$共享,以防重启后再次加载
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\delshare.reg
echo "AutoShareWks"=dword:00000000>> c:\delshare.reg
echo "AutoShareServer"=dword:00000000>> c:\delshare.reg
:: 删除IPC$共享,本功能需要administritor权限才能成功删除
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]>> c:\delshare.reg
echo "restrictanonymous"=dword:00000001>> c:\delshare.reg
echo 正在导入注册表文件以更改系统默认设置.
regedit /s c:\delshare.reg
del c:\delshare.reg && echo 临时文件已经删除.
echo.
echo ------------------------------------------------------
echo.
echo 程序已经成功删除所有的默认共享.
echo.
echo 按任意键退出...
pause>nul
[ Last edited by namejm on 2006-6-9 at 19:52 ]
作者: chineselgs     时间: 2006-6-10 14:32
非常感谢楼上的!!!!
作者: willsort     时间: 2006-6-14 17:09

───────────────── 版务记录 ─────────────────
执行:Will Sort
操作:修改标题 - 帮我解释一下~
───────────────── 版务记录 ─────────────────

作者: flysp     时间: 2006-6-15 17:20
学习中……
作者: electronixtar     时间: 2006-6-15 22:47
不用输出 .reg 文件啦,用 reg 命令直接改就是了
作者: zhoung0     时间: 2006-9-18 05:31
恩。if exist %%a:\nul  可以不用nul吧。-  -
作者: kennyfan     时间: 2006-9-18 11:32
呵呵.4楼厉害!~
作者: ZJHJ     时间: 2006-9-28 09:17
4楼的你们也别全信,多数都是花架子.闷不懂的,也不知是从哪抄来的。其实就是
一句话,修改注册表项才是真的。
------------------------------
@echo off
echo  Windows Registry Editor Version 5.00> c:\lswj.reg
echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\lswj.reg
echo "AutoShareWks"=dword:00000000>> c:\lswj.reg
echo "AutoShareServer"=dword:00000000>> c:\lswj.reg
regedit /s c:\lswj.reg
del c:\lswj.reg
------------------------------
如果要恢复,你就改成 1 即:

@echo off
echo  Windows Registry Editor Version 5.00> c:\lswj.reg
echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\lswj.reg
echo "AutoShareWks"=dword:00000001>> c:\lswj.reg
echo "AutoShareServer"=dword:00000001>> c:\lswj.reg
regedit /s c:\lswj.reg
del c:\lswj.reg

----------=---------
作者: pengfei     时间: 2006-9-28 09:40
楼上兄弟的修改注册表的确是最可取的, 但4楼的代码也很全面.

我也发段批处理删除共享的代码:
@echo off
for /f "skip=4 tokens=1" %%i in ('net share') do (
    if not "%%i"=="命令成功完成。" if /i not "%%i"=="ipc$" net share %%i /delete
)
pause

[ Last edited by pengfei on 2006-9-28 at 11:29 ]
作者: namejm     时间: 2006-9-28 10:18
  嘿嘿,我那段代码确实是网上抄袭过来的,对注册表不是很懂,只添加了判断盘符的功能,并添加了点注释而已。

  再贴一段网上copy的东西出来,这个要全面一点,大家可以各取所需:
     

五板斧封杀Windows默认共享

Windows 2000/XP/2003版本的操作系统提供了默认共享功能,这些默认的共享都有“$”标志,意为隐含的,包括所有的逻辑盘(C$,D$,E$……)和系统目录Winnt或Windows(admin$)。

  带来的问题:

  微软的初衷是便于网管进行远程管理,这虽然方便了局域网用户,但对我们个人用户来说这样的设置是不安全的。如果电脑联网,网络上的任何人都可以通过共享硬盘,随意进入你的电脑。所以我们有必要关闭这些共享。更为可怕的是,黑客可以通过连接你的电脑实现对这些默认共享的访问。

  关闭这些默认共享的方法很多,笔者整理了五种,相信总有一种适合您。

  小知识:

  访问WindowsXP默认共享非常简单:一是通过“开始”→“运行”,输入“\\计算机名或IP地址\D$或admin$”(不包括两侧的引号,下同);二是使用IE等浏览器,在地址栏中输入上述格式或“file://10.80.34.33/d$”。

      一、右键“停止共享”法

  到“计算机管理”窗口中某个共享项(比如H$)上右键单击,选择“停止共享” 并确认后就会关闭这个共享,它下面的共享图标就会消失,重复几次所有的项目都可以停止共享。

  注意:但这种方法治标不治本,如果机器重启的话,这些共享又会恢复。此法比较适合于永不关闭的服务器,简单而且有效。

  二、批处理自启动法

  打开记事本,输入以下内容(记得每行最后要回车):

  net share ipc$ /delete
  net share admin$ /delete
  net share c$ /delete
  net share d$ /delete
  net share e$ /delete

  ……(你有几个硬盘分区就写几行这样的命令)

  保存为NotShare.bat(注意后缀!),然后把这个批处理文件拖到“程序”→“启动”项,这样每次开机就会运行它,也就是通过net命令关闭共享。

  如果哪一天你需要开启某个或某些共享,只要重新编辑这个批处理文件即可(把相应的那个命令行删掉)。

  三、注册表改键值法

  “开始”→“运行”输入“regedit”确定后,打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters”项,双击右侧窗口中的“AutoShareServer”项将键值由1改为0,这样就能关闭硬盘各分区的共享。如果没有AutoShareServer项,可自己新建一个再改键值。然后还是在这一窗口下再找到“AutoShareWks”项,也把键值由1改为0,关闭admin$共享。最后到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa”项处找到“restrictanonymous”,将键值设为1,关闭IPC$共享。

  注意:本法必须重启机器,但一经改动就会永远停止共享。

  四、停止服务法

  还是到“计算机管理”窗口中,单击展开左侧的“服务和应用程序”并选中其中的“服务”,此时右侧就列出了所有服务项目。共享服务对应的名称是“Server”(在进程中的名称为services),找到后双击它,在弹出的“常规”标签中把“启动类型”由原来的“自动”更改为“已禁用”。然后单击下面“服务状态”的“停止”按钮,再确认一下就OK了。

  五、卸载“文件和打印机共享”法

  右击“网上邻居”选“属性”,在弹出的“网络和拨号连接”窗口中右击“本地连接”选“属性”,从“此连接使用下列选定的组件”中选中“Microsoft网络的文件和打印机共享”后,单击下面的“卸载”按钮并确认一下。

  注意:本方法最大的缺陷是当你在某个文件夹上右击时,弹出的快捷菜单中的“共享”一项消失了,因为对应的功能服务已经被卸载掉了!

作者: ZJHJ     时间: 2006-9-28 11:05
我也发段批处理删除共享的代码:
@echo off
for /f "skip=4 tokens=1" %%i in ('net share') do (
    if not "%%i"=="命令成功完成。" net share %%i /delete
)
pause
你这段批处理删除共享不灵的哦!会拒绝访问和发生错误5
作者: pengfei     时间: 2006-9-28 11:26
IPC$共享是无法删除的, 出现错误也不足为怪...

加了个判断, 跳过ipc$. 它的执行原理是列出所有共享, 然后一个个删除.

@echo off
for /f "skip=4 tokens=1" %%i in ('net share') do (
    if not "%%i"=="命令成功完成。" if /i not "%%i"=="ipc$" net share %%i /delete
)
pause

[ Last edited by pengfei on 2006-9-29 at 06:06 ]
作者: ZJHJ     时间: 2006-9-28 11:57
@echo off
for /f "skip=4 tokens=1" %%i in ('net share') do (
    if not "%%i"=="命令成功完成。" if /i not "%%i"=="ipc$" net share %%i /delete
)
pause

你打开注册表编辑器看看删除没有啊?
作者: pengfei     时间: 2006-9-29 05:58


  Quote:
Originally posted by ZJHJ at 2006-9-28 11:57:
@echo off
for /f "skip=4 tokens=1" %%i in ('net share') do (
    if not "%%i"=="命令成功完成。" if /i not "%%i"=="ipc$" net share %%i /del ...

本来就没有对注册表进行操作, 只是一次性删除除IPC$外的所有共享. 下次开机还会自动开启.

如果想测试这段代码有没有效果, 你应该net share而不是查看注册表.

[ Last edited by pengfei on 2006-9-29 at 06:00 ]
作者: joyoustar     时间: 2007-12-4 10:00
用reg add命令啊,万一C盘没有写入权限呢?
作者: 13534980757     时间: 2008-1-7 16:29
关闭NT默认服务