2010-01-27 40 views
6

Tại cửa hàng của tôi, chúng tôi được sử dụng để lưu trữ các chuỗi kết nối trong tệp .config. Nhưng khi chúng tôi phải cập nhật nó trong một số ứng dụng trong cùng một máy, ai đó đã đưa ra ý tưởng lưu trữ nó trên cửa sổ đăng ký.Nơi lưu trữ chuỗi kết nối được nhiều ứng dụng sử dụng trong cùng một máy?

Đây có phải là một ý tưởng hay không? Các tác động (an ninh) là gì?

Trả lời

2

Chúng tôi lưu trữ dữ liệu chung trong sổ đăng ký ở dạng được mã hóa. sửa đổi Machine.config là một hoạt động rất đáng sợ. ;) Một bất lợi là bảo mật đăng ký. Và các cửa sổ 64bit có thể làm việc với registry rất lạ. đặc biệt là trên chế độ WoW.

Ngoài ra đăng ký dành cho quản trị viên là một người bạn rất cũ và nổi tiếng (sao lưu, khôi phục, nhập, xuất, v.v ... không phải là mới đối với họ). như đối với machine.config Tôi muốn họ không bao giờ muốn chạm vào nó.

+0

Sổ đăng ký cũ và nổi tiếng, nhưng điều đó không làm cho nó trở thành một lựa chọn tốt. Nếu bất cứ điều gì, .NET đã cố gắng rất nhiều để di chuyển ra khỏi sự phụ thuộc của registry của COM và thay vào đó cho phép cài đặt XCOPY. Vì vậy, trong trường hợp này, tôi sẽ đi với machine.config. –

+0

XCOPY không hoạt động. _all programs_ yêu cầu .net và XCOPY ở đâu? .net yêu cầu msi vv –

+0

XCOPY là một điều vô nghĩa tiếp thị - nó không thể quản lý được thông qua AD, nó không được hiển thị thông qua WIA. nghĩ về sysadmins. ai nên hỗ trợ các chương trình mà người dùng có thể sao chép trong bất kỳ thư mục nào. –

2

Có thể bạn chỉ có thể có một thành phần chung (WCF hoặc cách khác) mà bạn tham chiếu cho chuỗi kết nối. Bằng cách đó, bạn chỉ phải lưu trữ chuỗi ở một nơi.

tôi sẽ không sử dụng Windows Registry để cài đặt ứng dụng cụ thể như thế, mặc dù tôi biết rất nhiều các ứng dụng khác làm ...

+1

Bạn có thể viết một thư viện đơn giản đọc chuỗi kết nối từ một tệp XML đơn giản và trả về nó. Có lẽ, nó sẽ đi vào GAC. –

4

Bạn có thể lưu nó trong Machine.config. Tất cả các tệp .config sẽ kế thừa bất kỳ chuỗi kết nối nào được xác định trong đó trừ khi xóa rõ ràng.

+0

Tính năng này có hoạt động đối với các ứng dụng không phải trên web không? –

+3

có nó hoạt động (nếu bạn chỉ cần truy cập đọc), machine.config là toàn cầu cho toàn bộ dotnet nhưng nếu ai đó cài đặt lại .net hoặc thay thế machine.config. (ai đó như @Mark ;-)) –

+0

Vâng, hy vọng bạn có quyền kiểm soát máy chủ của riêng bạn. Bạn có thể hỏi cùng một câu hỏi về ứng dụng của riêng bạn. :) –

0

Tôi đồng ý với phương pháp machine.config. Tuy nhiên, cách dễ dàng hơn để làm điều đó là tạo một thư mục ở đâu đó trên hệ thống tệp của bạn bằng tệp xml được mã hóa. Sử dụng Dpapi ví dụ và sau đó chỉ cần tạo một lớp phổ biến mà đọc, giải mã các tập tin và trả về chuỗi kết nối. Hãy nhớ có một phương thức dự phòng để lấy dữ liệu cấu hình nếu ai đó xóa tệp đó. Như đã chỉ ra trước đó, machine.config có thể được ghi đè, tương tự với cách tiếp cận này. Các quyền của thư mục có thể được sử dụng để đặt các hạn chế đọc và từ chối viết cho tất cả trừ các nhà phát triển. Điều này sẽ giữ cho nó an toàn khỏi bị "vô tình" ghi đè và đồng thời đảm bảo rằng không ai có thể đọc dữ liệu trong đó (mặc dù đây là tranh luận mà không có khóa)

Các vấn đề liên quan