Tôi đã tạo một Dịch vụ Windows được cài đặt trong thư mục c:\Program Files\My Service
. Cùng với tệp thực thi, tôi có tệp XML được cài đặt trong cùng một thư mục. Tệp XML này được dịch vụ sử dụng để nhận thông tin do người dùng xác định.Cách đọc tệp văn bản từ Dịch vụ Windows?
Trong đoạn mã của dịch vụ tôi đọc các tập tin như thể nó là địa phương để thực thi .. Ví dụ:
DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");
Tuy nhiên, khi tôi chạy dịch vụ, dịch vụ ném một ngoại lệ nói:
không thể tìm thấy tập tin 'C: \ Windows \ system32 \ Foo.xml'
Kể từ cuộc sống thực thi trong c:\Program Files\My Service
tôi mong đợi Windows Ser để tìm tệp XML trong c:\Program Files\My Service\Foo.xml
. Rõ ràng, đó không phải là trường hợp.
Làm cách nào để buộc dịch vụ tìm (tương đối) đối với tệp Foo.xml ở cùng một vị trí nơi dịch vụ có thể thực thi được?
trùng lặp có thể xảy ra [Làm thế nào để tìm ra thư mục cài đặt của một dịch vụ Windows, sử dụng C#?] (Http://stackoverflow.com/questions/491735/how-do-i-find-the-install-directory-of-a-windows-service-using-c) –
Chỉ cần xem xét, bạn * không nên * lưu trữ các cài đặt ứng dụng có thể định cấu hình trong thư mục tệp chương trình như truy cập để sửa đổi đường dẫn này yêu cầu đặc quyền. Thay vào đó, hãy xem xét sử dụng 'ApplicationData' /' LocalApplicationData'. –
@QuintinRobinson - Cảm ơn bạn đã nhắc nhở! +1 – Jed