關於windows service不能訪問網絡共享盤(NetWork Drive)的解決方案


我映射一個網絡驅動器到本機的時候,發現本機的程序直接能訪問讀取網絡驅動器,但是把本機的程序作為本機的windows服務運行的時候就不能訪問了。

Qt中的QDir::exist(folder)訪問失敗。這樣導致的原因是映射網絡驅動器,需要服務程序運行的權限賬戶和遠程共享文件的機器要運行在同一個域(Domain)

下面,用PStool這個工具就可以了,它直接使用SYSTEM賬戶權限,來映射網絡驅動器。這樣,遠程驅動器和本機的service就處於同一個域下了。

 

注意:這個是比較hack的做法,並不推薦這么做。微軟是不支持的。

 

1.用psexec創建網絡驅動器:

admin 權限運行CMD,然后運行psexec -i -s cmd.exe  

然后在新打開的CMD窗口中運行以下命令映射網絡驅動器Z盤, net use z: \\server_ip\share_folder /persistent:yes 

 以上的net命令可能會讓你輸入遠程的系統用戶名和密碼,我的遠程是XP,所以用戶名密碼是:Administrator/無密碼

注: 所有微軟的Windows 系統默認管理員用戶都是Administator 而密碼是你自己設定的,系統沒有默認密碼

2.運行本機windows服務,成功訪問網絡驅動器Z

 

references:

http://stackoverflow.com/questions/18632193/directory-exists-returns-false-for-mapped-drive-in-c-sharp-coding

http://stackoverflow.com/questions/3622089/windows-service-cant-access-network-share

http://serverfault.com/questions/177139/windows-service-cant-access-network-share

http://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service

https://technet.microsoft.com/en-us/sysinternals/psexec   (PStool工具下載)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM