tôi tự hỏi liệu có thể giải quyết vấn đề này hay không. Tôi có ứng dụng qt và nếu người dùng đánh dấu vào hộp kiểm, tôi muốn ứng dụng này khởi chạy khi khởi động hệ điều hành. Ive đã googled và ive đưa ra giải pháp này>Chạy ứng dụng khi khởi động
ứng dụng QT tôi cần đặc quyền quản trị để sửa đổi registry, do đó
- tạo file manifest (
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
)
2. áp dụng lệnh này
mt -manifest manifestfile -outputresource: binfile.exe; 1
3.sử dụng đoạn mã này trong QT để sửa đổi đăng ký
void MainWindow::set_on_startup() {
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
if (ui->checkBox->checkState()) {
QString value = QCoreApplication::applicationFilePath(); //get absolute path of running exe
QString apostroph = "\"";
#ifdef DEBUG
ui->textEdit->append(QCoreApplication::applicationFilePath());
#endif
value.replace("/","\\");
value = apostroph + value + apostroph + " --argument";
#ifdef DEBUG
ui->textEdit->append(value);
#endif
//write value to the register
settings.setValue("name", value);
}
else {
settings.remove("name");
}
}
Vì vậy, điều này có vẻ đúng không? NHƯNG ... ứng dụng với quyền quản trị mặc định không thể được khởi chạy khi khởi động hệ điều hành, NHƯNG ứng dụng mà không cần quản trị viên không thể sửa đổi sổ đăng ký. Vì vậy, có một giải pháp - cho người dùng biết rằng nếu anh ta muốn đặt tùy chọn "khởi động" này, trước tiên anh ta cần bắt đầu ứng dụng là quản trị viên, sau đó ứng dụng sẽ có thể sửa đổi đăng ký và các đặc quyền mặc định sẽ vẫn là "asInvoker" , nhưng điều này có vẻ thực tế và tôi nghĩ rằng người dùng sẽ không được khuyến khích bởi điều này.
Vì vậy, cách giải quyết vấn đề này? cách các ứng dụng khác giải quyết vấn đề này?
Một giải pháp tốt hơn là yêu cầu quyền root chứ không phải khi khởi động ứng dụng mà là cài đặt tùy chọn "bắt đầu khởi động". Bạn có thể không chỉ tạo một mẹo bên cạnh nút "khởi động khi khởi động" cho biết hành động này yêu cầu quyền root và do đó UAC sẽ bật lên? Người dùng sẽ không ngạc nhiên khi đó. Althoug một giải pháp mà không có UAC nói bất cứ điều gì sẽ tốt hơn, tất nhiên. – Redfox
tốt, tôi không biết cách lấy đặc quyền root chỉ sau khi nhấp vào hộp kiểm đó. Bằng cách này, "giải pháp" hiện tại của tôi đang gây ra cửa sổ cảnh báo UAC lên và tôi không coi nó là một cái gì đó tiêu cực. Là giải pháp tạm thời, tôi có thể sẽ để mặc định các private priveleges "asInvoker" và viết dưới hộp kiểm đó như "hành động này yêu cầu quản trị viên, bạn phải khởi chạy applicatino với tùy chọn" chạy như quản trị viên "" –
Nhưng vẫn còn, tôi tự hỏi làm thế nào khác ứng dụng đang giải quyết vấn đề này.Ví dụ, ive được duyệt registry, và tôi thấy rằng Hamachi đã có, và nó thực sự bắt đầu khởi động hệ thống, nhưng ứng dụng không yêu cầu quản trị viên, vì vậy làm thế nào là mục đăng ký này được thực hiện? (có lẽ trong khi instalation, tôi đoán .., nhưng vẫn còn, làm thế nào người dùng sẽ hủy bỏ nó thông qua ứng dụng nếu ứng dụng đó không có priveleges admin) –