Удаление защищено паролем с помощью Inno Setup - PullRequest
6 голосов
/ 05 марта 2010

Я делаю установщик, используя Inno Setup. Я хочу защитить паролем удаление. Поэтому я планирую запросить пароль для удаления во время установки и сохранить его в файл. При удалении спросите пароль у пользователя и сравните пароли.

Я не смог найти способ разрешить пользователю вводить пароль при удалении, есть ли такой?

Ответы [ 3 ]

3 голосов
/ 03 июня 2016

Некоторые пользователи Inno Setup требуют, чтобы пользователь, который хочет удалить программное обеспечение, запросил пароль, прежде чем это станет возможным.Антивирусное программное обеспечение может быть кандидатом для этого требования, например.Приведенный ниже код показывает, как создать форму, запросить пароль и удалить программное обеспечение, только если пароль правильный.Этот метод очень слабый, легко узнать пароль.Таким образом, тот, кто хочет использовать эту стратегию для защиты своего программного обеспечения от деинсталляции, должен написать что-то более безопасное.Если пользователь хочет удалить и не знает, файлы паролей могут быть удалены в любом случае из папки приложения.В этом примере пароль для удаления: removeme .

[Setup]
AppName=UninsPassword
AppVerName=UninsPassword
DisableProgramGroupPage=true
DisableStartupPrompt=true
DefaultDirName={pf}\UninsPassword

[Code]
function AskPassword(): Boolean;
var
  Form: TSetupForm;
  OKButton, CancelButton: TButton;
  PwdEdit: TPasswordEdit;
begin
  Result := false;
  Form := CreateCustomForm();
  try
    Form.ClientWidth := ScaleX(256);
    Form.ClientHeight := ScaleY(100);
    Form.Caption := 'Uninstall Password';
    Form.BorderIcons := [biSystemMenu];
    Form.BorderStyle := bsDialog;
    Form.Center;

    OKButton := TButton.Create(Form);
    OKButton.Parent := Form;
    OKButton.Width := ScaleX(75);
    OKButton.Height := ScaleY(23);
    OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 50);
    OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);
    OKButton.Caption := 'OK';
    OKButton.ModalResult := mrOk;
    OKButton.Default := true;

    CancelButton := TButton.Create(Form);
    CancelButton.Parent := Form;
    CancelButton.Width := ScaleX(75);
    CancelButton.Height := ScaleY(23);
    CancelButton.Left := Form.ClientWidth - ScaleX(75 + 50);
    CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
    CancelButton.Caption := 'Cancel';
    CancelButton.ModalResult := mrCancel;
    CancelButton.Cancel := True;

    PwdEdit := TPasswordEdit.Create(Form);
    PwdEdit.Parent := Form;
    PwdEdit.Width := ScaleX(210);
    PwdEdit.Height := ScaleY(23);
    PwdEdit.Left := ScaleX(23);
    PwdEdit.Top := ScaleY(23);

    Form.ActiveControl := PwdEdit;

    if Form.ShowModal() = mrOk then
    begin
      Result := PwdEdit.Text = 'removeme';
      if not Result then
            MsgBox('Password incorrect: Uninstallation prohibited.', mbInformation, MB_OK);
    end;
  finally
    Form.Free();
  end;
end;


function InitializeUninstall(): Boolean;
begin
  Result := AskPassword();
end;

Источник: http://www.vincenzo.net/isxkb/index.php?title=Require_an_uninstallation_password

1 голос
/ 25 марта 2010

Защита паролем от деинсталляций не работает, так как пользователь может просто вручную удалить ваши файлы.Это означает, что в Inno Setup нет встроенной опции для этого.

Если вы все равно захотите это сделать, вы можете использовать функцию события InitializeUninstall, чтобы запросить у пользователя пароль и вернуть False при несовпадении.Это прервет удаление.

0 голосов
/ 30 октября 2010

Вы можете проверить функцию «CheckPassword» в справке Inno Setup.

...