运行于Windows内建账户下的服务访问映射网络驱动器的方法


Windows服务如果是运行在本地系统帐户下或本地服务帐户下,它只能访问这个账户自己创建的映射驱动器,UNC路径访问则不受次限制。
LocalService Account (NT AUTHORITY\LocalService)没有简单的访问映射驱动器的方法。需要用NSSM之类的软将将脚本转为在LocalService账户下运行的服务。
LocalSystem Account (NT AUTHORITY\SYSTEM)则有方法以他的身份创建映射驱动器
 
首先下载PsExec程序,它在PsTools中: http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx
然后运行一下PowerShell脚本
$PSEXECPATH = "E:\GreenSOft\PsTools\PsExec.exe" #指定PsExec程序完整路径
$SHARESRVPATH = "192.168.1.206" #连接服务器地址
$SHAREFOLDERPATH = "\\192.168.1.206\test" #共享UNC路径
$CONNUSER = "MSSQLUser" #连接用户名
$CONNPWD = "SHPPD2006!@#!@#SQL" #连接密码

#删除旧的网络映射驱动器
Start -Process -Wait `
-PSPath $PSEXECPATH `
-ArgumentList "-accepteula -s net use P: /delete /y";

#生成新的网络映射驱动器
Start -Process -Wait `
-PSPath $PSEXECPATH `
-ArgumentList "-accepteula -s net use P: $SHAREFOLDERPATH /user:" "$SHARESRVPATH\$CONNUSER" " " "$CONNPWD" "  /persistent:yes";


如果要每次启动时都自动以LocalSystem账户创建映射驱动器,则按一下步骤:
1、在运行中输入 gpedit.msc以打开“ 本地组策略编辑器
2、 在控制台树中,单击“脚本(启动/关机)”。路径为“计算机配置\Windows 设置\脚本(启动/关机)”。
3、添加编辑,指定脚本位置
4、脚本内容如下:
$PSEXECPATH = "E:\GreenSOft\PsTools\PsExec.exe" #指定PsExec程序完整路径
$SHARESRVPATH = "192.168.1.206" #连接服务器地址
$SHAREFOLDERPATH = "\\192.168.1.206\test" #共享UNC路径
$CONNUSER = "MSSQLUser" #连接用户名
$CONNPWD = "SHPPD2006!@#!@#SQL" #连接密码

#生成新的网络映射驱动器
Start -Process -Wait `
-PSPath $PSEXECPATH `
-ArgumentList "-accepteula -s net use P: $SHAREFOLDERPATH /user:" "$SHARESRVPATH\$CONNUSER" " " "$CONNPWD" " ";



参考资料:
INFO: Services and Redirected Drives  http://support.microsoft.com/kb/180362/en-us
Windows服务访问网络映射驱动器   http://blog.163.com/xia_wenlan/blog/static/74348620200882344642907/

 






免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM