2009-02-17 51 views
13

Tôi đang tạo chương trình bằng C++, mà tôi muốn có thể có tùy chọn để người dùng tự động bắt đầu trong cửa sổ. Vì vậy, khi người dùng khởi động máy tính của mình, cửa sổ sẽ tự động khởi động chương trình này. Tôi đã đọc công cụ về việc sửa đổi registry hoặc đặt nó trong thư mục khởi động, nhưng điều gì sẽ là cách "sạch" tốt nhất để làm điều này?Cách tạo chương trình tự động khởi động C++

+0

Tham khảo link này http://ask-leo.com/auto_start_how_do_i_run_a_program_automatically_when_windows_starts.html – Vinay

Trả lời

15

Thư mục khởi động đủ sạch sẽ.

Cung cấp cho người dùng khả năng xóa nó nếu cần.

+0

Hãy lưu ý rằng nếu bạn làm một cái gì đó như thế này, thay vì chạy một dịch vụ, ứng dụng của bạn có thể được nhiều người dùng chạy cùng một lúc. – Eclipse

+1

Vâng, tôi thực sự ghét nó khi một cái gì đó bắt đầu tự động và tôi phải tìm kiếm sổ đăng ký để giữ cho nó chạy lại. Một số nhà phát triển hoạt động như thể họ sở hữu máy của bạn. –

3

Tùy thuộc vào việc bạn đang thực hiện cài đặt toàn người dùng hay cho mỗi người dùng, hãy đặt nó trong thư mục Khởi động cho Tất cả người dùng hoặc thư mục Khởi động cho mỗi người dùng. Thư mục Startup bạn thấy trong menu là sự hợp nhất của cả hai, nhưng người dùng không phải quản trị viên không thể xóa các mục nhập đến từ phần Tất cả người dùng.

Bạn thực sự không phải làm bất cứ điều gì cho việc này. Người dùng có thể sao chép lối tắt thông thường của bạn vào menu Khởi động. Do đó, bất kỳ chương trình nào có thể là chương trình tự động khởi động. Không cần phải là C++.

9

Có rất nhiều cách để autostart một ứng dụng, nhưng đơn giản nhất, phổ biến nhất và IMO tốt nhất là:

  1. Đặt một shortcut trong thư mục autostart
  2. Thêm một mục tự khởi động để đăng ký (Software \ Microsoft \ Windows \ CurrentVersion \ Run)

Kết quả cuối cùng giống nhau cho cả hai. Tôi tin rằng cách đăng ký được thực hiện trước đó trong quá trình đăng nhập hơn là cách khởi động, nhưng tôi không chắc chắn. Nó không tạo ra bất kỳ sự khác biệt nào cho hầu hết các trường hợp. Tôi thích đăng ký, nhưng đó là sở thích cá nhân. Bạn có thể tạo và xóa khóa đăng ký hoặc lối tắt theo chương trình trong ứng dụng của bạn.

Với cả hai tùy chọn, bạn có thể sử dụng một cài đặt cho tất cả người dùng (Tất cả thư mục khởi động người dùng hoặc dưới khóa HKLM trong sổ đăng ký) hoặc thư mục khởi động người dùng hoặc khóa HKCR cụ thể của người dùng.

Nói chung, tốt hơn là nên sử dụng tùy chọn cho mỗi người dùng, bởi vì bạn có thể chắc chắn có quyền viết ở những khu vực đó; và mọi người dùng trên máy tính đều có thể có cài đặt của riêng họ.

0

Bạn có thể đăng ký nó dưới dạng dịch vụ cửa sổ. Bạn có thể sử dụng "Giải pháp Qt" để dễ dàng tạo ứng dụng dưới dạng dịch vụ cửa sổ.

+0

Dịch vụ Windows không theo bất kỳ cách nào giống như những gì OP hỏi. Hãy thử đăng câu trả lời thực sự áp dụng cho chủ đề trong tầm tay. –

+0

Anh ta có thể tạo một tệp lô để triển khai ứng dụng dưới dạng dịch vụ hoặc hủy triển khai nó. – Qubeuc

-1

Với mã này, bạn có thể làm điều đó

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Reg:TRegistry; 
begin 
    Reg := TRegistry.Create; 
    try 
     Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True); 
     Reg.WriteString('Program name',ParamStr(0)); 
    finally 
    Reg.Free; 
    end; 

end; 

hay này:

using Microsoft.Win32; 
private void AddStartUpKey(string _name, string _path) { 
    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); 
    key.SetValue(_name, _path); 
} 
private void RemoveStartUpKey(string _name) { 
    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); 
    key.DeleteValue(_name, false); 
} 
+4

Thay vì chỉ đăng một khối mã, vui lòng * giải thích * tại sao mã này giải quyết vấn đề được đặt ra. Nếu không có một lời giải thích, đây không phải là một câu trả lời. –

+0

Ngoài ra, không phải trong số này là C++. – immibis

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