我正在編寫一個Windows服務(Delphi XE2),它調用第三方庫COM
中的函數。 COM
庫的核心是相當古老的,並要求驅動器號映射到其數據文件的位置。它絕對不適用於UNC
路徑。在我的服務中,我在服務啓動時連接驅動器盤符,以確保它可用。我正在使用WNetAddConnection2
API調用,並檢查返回值。驅動器正在成功連接,除非驅動器號已被使用(ERROR_ALREADY_ASSIGNED
),但無論在哪種情況下,COM功能都可正常工作。我在服務停止時遇到的問題。如果我在服務停止時(WNetCancelConnection2
)和服務器上的其他應用程序/服務正在使用驅動器號時斷開驅動器連接,則它們將受到影響並失去連接。但是,如果我在服務停止時不斷開驅動器,則驅動器將「丟失」並且無法通過其他服務連接。在Windows服務中連接映射驅動器號
我敢肯定,這與驅動器映射如何由創建它們的會話/服務「擁有」有關,但我不確定什麼是正確的解決方案。我目前正在'本地系統'開始服務。我知道微軟總是建議服務不使用映射驅動器,但我沒有選擇。有沒有人遇到過這個問題,並有任何建議?