3

管理者権限で実行されるNSISインストーラーを作成する必要があります。私はこれらの特権を要求します

RequestExecutionLevel admin

これまでのところ、これは機能します。ただし、ユーザーのデスクトップにショートカットリンクを配置する必要もあります。すべてのユーザーのショートカットを作成するのではなく、現在ログインしているユーザーのショートカットのみを作成します。だから私は使用します

SetShellVarContext current 

インストーラーセクションで。現在のユーザーが管理者権限を持っている場合、これは機能します。通常のユーザーがいる場合、Windows(7)は特権ユーザーの資格情報を要求しますが、これも正しいです。ただし、インストーラーは、現在のユーザーではなく、特権ユーザーのデスクトップにアイコンを作成します。

では、NSISに、現在のユーザーが管理者権限を持っていない場合にデスクトップアイコンを作成する必要があることをどのように伝えることができますか?

参考までに、RequestExecutionLevelとSetShellVarContextの両方を省略すると、管理者権限の入力も求められますが、インストーラーは現在のユーザーのデスクトップと管理者ユーザーのアイコンを作成します。これはある種の互換性のある動作だと思います。

4

1 に答える 1

2

(この正確な問題のために)実際にこれを行うことは想定されておらず、基本的に、設計上壊れているインストーラーを作成する方法を尋ねています。これはNSIS固有の問題ではなく、UAC固有の問題でもありません。これは、Win2000でrunasが追加されてから存在しています。runas / UACを使用して昇格すると、新しいプロセスがそのユーザーとして実行され、HKCUフォルダーとシェルフォルダーが使用されます...

スクリプトに「RequestExecutionLeveladmin」が必要な場合は、マシンレベルの処理を行っているため、「SetShellVarContext all」を呼び出して、ファイルを$ ProgramFilesにインストールし、アンインストール登録をHKLMに書き込む必要があります。これは、Vista + / UACだけでなく、NTのすべてのバージョンに当てはまります。(ほとんどの人は、NT4およびNT5で非管理者としてテストすることを忘れています)

すべてのユーザーのショートカットを作成することが非常に大きな問題である場合は、スタートメニューページの[ショートカットを作成しない]チェックボックスを有効にして、ユーザーが決定できるようにすることをお勧めします。

それでも壊れた動作を強制したい場合は、このプラグインを使用する必要があります。( NSISフォーラムでこのプラグインに関する多くのトピックを見つけることができるはずです)

于 2012-08-13T10:14:24.363 に答える