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/
Map a network drive to be used by a service
http://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service