LoginSignup
0
1

More than 5 years have passed since last update.

インストールしたユーザーのみ実行できるようにする

Posted at

やりたいこと

プログラムをインストールしたユーザーだけが、そのプログラムを実行できるようにしたい。

環境

  • OS:Windows 7/10
  • セットアップ作成ツール:Inno Setup

方法

  1. インストーラーでLocal Application Dataにインストールしたことを示すファイルを保存する。

    // iss
    Source: ".\installed"; DestDir: "{localappdata}\company\app"; Flags: ignoreversion;

  2. プログラムの起動時に、そのファイルがあるかどうかをチェックして、ファイルがなければ、起動できないメッセージを表示して終了する。

// c#
string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string installedFile = Path.Combine(folder, "company", "app", "installed");
if (File.Exists(installedFile) == false)
{
    MessageBox.Show("You can't execute this program.");
}

メモ

  • 管理者権限を持たないユーザーの場合、管理者ユーザーに移行してインストールするので、インストーラーを実行したユーザーでも起動はできない。

  • inno setupでインストールしたユーザーのデスクトップのみにアイコンを作成する

Name: "{userdesktop}\app"; Filename: "{app}\app.exe"; WorkingDir: "{app}";
  • inno setupでインストールしたユーザーのスタートメニューのみにアイコンを追加する(本当はフォルダーを追加したかったが分からなかった。)
Name: "{userprograms}\app"; Filename: "{app}\app.exe"; WorkingDir: "{app}"; 
  • Windows Installerのインストール対象を「このユーザーのみ」に設定しても、エクスプローラなどで直にexeファイルを起動すれば実行できる。このオプションはデスクトップとスタートメニューにショートカットを追加しないだけのフラグみたい。

  • レジストリを使う方がスマートだったかもしれない。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1