非域环境下管理Windows的共享访问权限最大的问题是很难控制客户端访问主机时的所使用的账号,Windows在这方面的没有统一的管理界面,很容易让人困惑:

非域环境下Windows客户端访问共享服务器时的账户检测流程:

这是一个经过反复尝试后推理出的检测流程

1.检测客户端是否有存储的针对该服务器的登录凭据,如果有使用该凭据(账户)进行登录,如果没有转下一步.

2.使用当前客户端的用户名和密码向服务器发出登录申请,如果服务器有同名同密码账户则获取该账户权限,(如果失败转下一步)

3.使用Guest账户尝试连接服务器 (如果失败转下一步)

4.显示用户名/密码的提示窗口,由用户输入连接服务器的账户信息,根据连接方式的具体不同(映射或直接访问路径等等),有时可以选择保存该账户信息,作为以后的登录凭据

通过以上流程可以发现,要使客户端使用指定的账户连接共享服务器的最佳方式是控制客户端的存储的针对该服务器的登录凭据,windows提供了管理该凭据的方法,在windows7下位于:控制面板->用户账户->管理windows凭据下.WinXP下也要类似配置工具.

直接打开给工具的命令行是:RunDll32.exe keymgr.dll,KRShowKeyMgr

 

另外还有一个可以通过命令行界面管理凭据的工具cmdkey.exe,该工具随Windows2003 Support Tools 发布,WinXP下没有该工具,但该工具适用于Win2000以后的所有Win版本,可以直接复制使用。

 

利用cmdkey可以写一个批处理工具来统一部署大量的客户端,以下代码建设客户端已经复制了cmdkey.exe,该工具可以放置于和批处理相同的目录下,或者复制到windows,windows\system32等可搜索的目录下。

 

echo > 连接文件服务器(连接帐号将自动保存在当前计算机上)
echo 请关闭所有打开的我的电脑、文件夹等文件窗口.....

set /p host=请输入服务器名称(IP地址或者机器名):
set /p u=请输入用户名:
set /p p=请输入密  码:

echo.
echo 清除原有连接信息 保存用户名和密码
@net use * /delete /y >nul
@cmdkey /delete:%host% >nul
@cmdkey /add:%host% /user:ysh\%u% /pass:%p% >nul
@net use * /delete /y >nul

echo.
echo 自动进行磁盘映射
@net use x: \\%host%\共享目录路径 /Persistent:YES

echo  **注册完成**

(87)


发表评论

电子邮件地址不会被公开。