2009-07-12 9 views
9

Tôi đã viết một ứng dụng và tôi muốn thêm một số đăng ký/số sêri vào nó (Tôi lớn về sự bất tiện tối thiểu - ala # 4 tại this Eric Sink article). Câu hỏi của tôi là về nơi lưu trữ "kích hoạt" khi ứng dụng đã được đăng ký. Như tôi đã hiểu, tôi có một sự cân bằng giữa việc lưu trữ khóa ở nơi công cộng, nơi tất cả người dùng có thể đọc nó (nhưng yêu cầu quyền quản trị để lưu ở đó) và lưu trữ kích hoạt mỗi người dùng (nhưng sau đó mỗi người dùng trên máy tính sẽ phải kích hoạt độc lập). Điều đó mang lại cho tôi hai lựa chọn:Tôi nên lưu trữ khóa "kích hoạt" của ứng dụng ở đâu?

  1. Một số người dùng, với quyền quản trị cục bộ, kích hoạt sản phẩm. Kích hoạt được lưu trữ trong HKLM, trong thư mục tệp chương trình hoặc ở nơi khác mà tất cả người dùng có thể đọc nó và sản phẩm được kích hoạt cho tất cả người dùng.
  2. Người dùng (có hoặc không có quyền quản trị) kích hoạt sản phẩm. Kích hoạt được lưu trữ ở đâu đó tập trung vào người dùng (app.config cho mỗi người dùng, HKCU, v.v.). Điểm cộng là người dùng không phải là quản trị viên. Nhược điểm là nếu có 6 người dùng sử dụng máy tính, mỗi người phải kích hoạt sản phẩm. Họ có thể tái sử dụng cùng một nối tiếp, nhưng họ vẫn phải nhập nó.

Đây thực sự là sự cân bằng? Nếu có, những người khác đã làm gì? Là một nhà phát triển, tôi quen với những người là quản trị viên địa phương, nhưng trong thế giới thực, tôi không mong đợi nhiều người dùng doanh nghiệp của mình trở thành quản trị viên cục bộ, điều này khiến tôi nghiêng về tùy chọn 2. Máy tính không được chia sẻ thường xuyên đủ mà tôi không nên quan tâm?

Một lần nữa, tôi không hỏi về cách đăng ký vật lý máy tính - tôi không lo lắng về điều đó. Tôi sẽ chỉ kiểm tra chìa khóa được cung cấp và cung cấp cho đi-trước, như tôi muốn được như không xâm lấn nhất có thể.

Trả lời

7

Tôi muốn giới thiệu giải pháp không yêu cầu quyền quản trị. Rất nhiều người dùng, đặc biệt là trong các môi trường được chia sẻ, sẽ không có các quyền đó và sẽ không thể tìm thấy ai thuận tiện với họ.

Ngoài ra, trong một vài năm tới, tôi nghĩ sẽ ngày càng trở nên bất thường khi có quyền quản trị trên máy tính bạn đang sử dụng vì tình hình bảo mật được cải thiện.

+0

Nhưng thật đáng ngại khi đăng ký cùng một ứng dụng lặp lại trên cùng một máy tính cho những người dùng khác nhau! Tôi coi đây là một lỗ hổng trong thiết kế ứng dụng. –

+5

Vâng, một giải pháp mà chúng tôi đã sử dụng là đặt thông tin kích hoạt vào sổ đăng ký người dùng hiện tại, sau đó nếu quyền quản trị có sẵn, hãy đặt nó trong máy cục bộ. Nếu quyền quản trị có sẵn, không có người dùng dùng chung nào trên máy bị phức tạp. Nếu không có quyền quản trị viên, mỗi người dùng được yêu cầu kích hoạt một lần. –

+1

Tôi thích ý tưởng ít nhất là lưu trữ nó trong HKCU, và sau đó cũng trong HKLM nếu người dùng có quyền quản trị. Điều đó có vẻ như sự bất tiện tối thiểu - đăng ký sẽ không * yêu cầu * quyền quản trị, nhưng sẽ tận dụng lợi thế của chúng nếu chúng ở đó. – SqlRyan

1

Đăng ký có vẻ là giải pháp ổn cho phần mềm doanh nghiệp. Ít nhất là tại nơi tôi từng làm việc, người dùng thông thường sẽ không phải là quản trị viên máy tính cục bộ, do đó, mỗi lần cài đặt sẽ yêu cầu tài khoản quản trị cục bộ. Đây là một điều tốt vì nó sẽ làm giảm bớt sự đau đầu của nhân viên hỗ trợ của bạn từ những người cài đặt tất cả mọi thứ trong môi trường máy tính doanh nghiệp của bạn. Thương mại là tất nhiên, người dùng sẽ được pissed rằng họ không thể cài đặt công cụ hoặc phải liên hệ với hỗ trợ để làm điều đó, nhưng hey ...:)

chất liệu khác:

  • USB/loại khác của dongle (ala cũ 3DMax)
  • tập tin văn bản cũ đồng bằng (ala phần mềm Garmin GPS trên thiết bị di động)
  • Mã hóa chúng/viết lại chìa khóa vào mã nhị phân hoặc một phần của mã nhị phân của bạn (đã thực hiện lại thủ thuật này trong DOS cũ ngày)
  • Lưu trữ chúng trong db của riêng bạn thông qua web (ala EverQu est/trò chơi khác MMORPG)
  • chủ chốt địa phương db (ala MathLab tôi nghĩ)
0

Chúng tôi tiết kiệm mã kích hoạt của chúng tôi để đăng ký cho người dùng hiện (HKCU), chúng tôi đã có vấn đề rất ít với nó. Khách hàng của chúng tôi chạy trên mọi thứ từ máy tính gia đình đến khách hàng mỏng trên mạng hợp tác.

Nếu phần mềm của bạn sẽ được sử dụng trong trường học hoặc môi trường giáo dục khác, bạn cần cung cấp một số phương pháp khác. Nó có thể đơn giản như một ứng dụng đăng ký riêng biệt mà sẽ tiết kiệm cho việc kích hoạt cho tất cả người dùng. Phần mềm của bạn sẽ phải làm hai tra cứu registry nhưng đó là một mức giá nhỏ để trả tiền.

1

Làm thế nào về việc sử dụng kho lưu trữ riêng biệt cho ứng dụng của bạn?

Bạn sẽ có khả năng lưu trữ thông tin này ở cấp độ mashiene cho đăng ký của bạn và thay đổi cấu hình có thể được duy trì ở cấp độ người dùng.

+0

Bạn có thể cho ví dụ về cách tôi có thể thực hiện việc này không? Tôi không quen với thuật ngữ này, vì vậy tôi muốn chắc chắn rằng tôi hiểu ý tưởng của bạn. – SqlRyan

+0

Bạn có thể tìm thấy ví dụ tại đây: http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefilestream(VS.71).aspx –

+0

Chỉnh sửa: Cái này tốt hơn: http://msdn.microsoft.com/en-us/library/bdts8hk0.aspx –

0

Nói chung, hầu hết các máy tính được sử dụng bởi một người dùng (hoặc nhiều người vẫn đang sử dụng cùng một tài khoản người dùng). Vì vậy, bộ nhớ dựa trên người dùng sẽ hoạt động hầu hết thời gian.

Tuy nhiên, đó không phải là/hoặc. Có các vị trí thư mục có thể ghi bởi tất cả người dùng - chẳng hạn như thư mục ProgramData. Điều quan trọng là làm cho tệp có thể đọc/ghi được bởi mọi người để bạn có thể xác minh nội dung bất kể người dùng.

DeployLX Licensing thực hiện điều này cho dữ liệu giấy phép không an toàn để có thể được nhiều người dùng sử dụng mà không có quản trị viên cấp quyền rõ ràng.

0

Bạn phải nhất quán. Nếu quyền quản trị viên được yêu cầu cài đặt chương trình, nó không nằm ngoài hàng để yêu cầu quyền quản trị viên đăng ký chương trình. Tương tự như vậy nếu bạn bằng cách nào đó quản lý để cài đặt nó mà không có quyền quản trị, sau đó đăng ký nó mà không quá.

Nếu bạn cài đặt và đăng ký trong một bước thì đây không phải là vấn đề.