2009-03-23 43 views
50

Tôi có một ứng dụng nhỏ với tùy chọn CheckBox mà người dùng có thể đặt nếu họ muốn ứng dụng bắt đầu bằng Windows.Làm cách nào để đặt chương trình khởi chạy khi khởi động

Câu hỏi của tôi là làm cách nào để thực sự đặt ứng dụng chạy khi khởi động.

ps: Tôi đang sử dụng C# với .NET 2.0.

+0

Nếu ứng dụng của bạn làm tốn thời gian hoặc tài nguyên khi khởi động như kiểm tra cập nhật trên internet, bạn có thể cân nhắc triển khai bộ hẹn giờ để chương trình của bạn chạy sau khi khởi động. Một trong những thú cưng của tôi là hàng chục chương trình trên máy tính của tôi kéo tất cả mọi thứ vào thu thập thông tin vì tất cả đều kiểm tra cập nhật lúc khởi động (vâng tôi đặc biệt nhìn bạn, iTunes và Java). –

Trả lời

86

Ba tùy chọn, theo thứ tự preferrence:

  1. Thêm nó vào thư mục Startup của người dùng hiện hành. Điều này đòi hỏi ít quyền nhất định để ứng dụng của bạn chạy và cung cấp cho người dùng quyền kiểm soát và phản hồi nhiều nhất về những gì đang diễn ra. Phía dưới là khó hơn một chút để xác định xem có hiển thị hộp kiểm đã được kiểm tra lần sau khi họ xem màn hình đó trong chương trình của bạn hay không.
  2. Thêm mã này vào khóa đăng ký HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run. Vấn đề duy nhất ở đây là nó yêu cầu quyền truy cập ghi vào sổ đăng ký, không phải lúc nào cũng có sẵn.
  3. Đặt thiết lập làm dịch vụ cửa sổ. Chỉ thực hiện điều này nếu bạn thực sự là có nghĩa là, bạn biết chắc chắn bạn muốn chạy chương trình này cho tất cả người dùng trên máy tính.
+0

có các thư mục và khóa đăng ký cho người dùng hiện tại và cho tất cả người dùng. quyết định những gì bạn cần cho ứng dụng của bạn. –

+0

Cảm ơn mọi người đã phản hồi nhanh chóng. Tôi đã đi với bạn tùy chọn 2. – Spidey

+0

Dịch vụ Windows có, nhưng bạn cần phải chạy ứng dụng với tùy chọn Mạo danh như người dùng.Nếu không, nó sẽ khởi động chương trình chỉ một lần và trong phiên hệ thống. – Patrik

5

Bạn có thể tạo mục đăng ký trong "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run", chỉ cần lưu ý rằng nó có thể hoạt động khác trên Vista. Cài đặt của bạn có thể bị "ảo hóa" do UAC.

3

Nếu một ứng dụng được thiết kế để bắt đầu khi Windows khởi động (như trái ngược với khi người dùng đăng nhập vào), lựa chọn duy nhất của bạn là liên quan đến một dịch vụ Windows. Viết ứng dụng dưới dạng dịch vụ hoặc viết một dịch vụ đơn giản chỉ tồn tại để khởi chạy ứng dụng.

Dịch vụ viết có thể phức tạp và có thể áp đặt các hạn chế có thể không được chấp nhận đối với trường hợp cụ thể của bạn. Một mẫu thiết kế phổ biến là một cặp front-end/back-end, với một dịch vụ thực hiện công việc và một front-end ứng dụng giao tiếp với dịch vụ để hiển thị thông tin cho người dùng.

Mặt khác, nếu bạn chỉ muốn ứng dụng của bạn để bắt đầu vào người dùng đăng nhập, bạn có thể sử dụng phương pháp 1 hoặc 2 mà Joel Coehoorn niêm yết.

103

Nhờ mọi người trả lời quá nhanh. Joel, tôi đã sử dụng tùy chọn 2 của bạn và thêm khóa đăng ký vào thư mục "Chạy" của người dùng hiện tại. Đây là mã tôi đã sử dụng cho bất kỳ ai quan tâm.

using Microsoft.Win32; 
    private void SetStartup() 
    { 
     RegistryKey rk = Registry.CurrentUser.OpenSubKey 
      ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

     if (chkStartUp.Checked) 
      rk.SetValue(AppName, Application.ExecutablePath); 
     else 
      rk.DeleteValue(AppName,false);    

    } 
+0

Biến chkStartUp là gì? –

+3

Tôi biết tôi đến trễ, @fernado Santiago nhưng đó là hộp kiểm của anh ấy cho phép người dùng thêm hoặc xóa chương trình khỏi khởi động. –

+1

Điều này không hữu ích cho tôi, nó cho tôi lỗi quyền. là có cách nào tôi có thể tự cấp phép và sau đó phát hành chúng? – CodeIt

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