0

ソフトウェアの更新には、更新レベルとさまざまな更新ソースを備えたVB6更新プログラムを使用しました。必要なファイルを更新元からローカルの宛先(C:\ programfiles \ company \ product)にコピーしました。

VB6プログラムは、サービスとしてサービスヘルパー(srvanyなど)を使用してのみ実行でき、指定されたフォルダー内の新しいファイルを変更または追加するための十分な権限がありません。ただし、.NETプログラムでさえ、サービスに管理者クレデンシャルを設定した場合にのみ、それを実行するために必要な権限がありません。

クライアントが管理者の資格情報を使用してサービスを設定しない場合、サービスまたはサービスによって呼び出されるプログラムを使用して、指定されたフォルダー内のファイルを変更するにはどうすればよいですか。つまり、クライアントに管理者権限があります。

指定された更新レベル(異なるプログラムおよびレポートバージョンを持つ異なるユーザー)のため、MSI/MSPは使用できません。

昇格を使用してC#.NETサービスから外部プログラムを呼び出そうとしましたが、方法はありません...マニフェストファイルを使用していくつかのヒントやコツを確認したり、管理者権限を持つ可能性のあるCOMオブジェクトを作成することを考えましたが、これは間違ったやり方。

もう1つの可能性は、「最高の特権」を与えることによってスケジュールされたタスクを作成することです。しかし、それは機能しますか?ログイン後にタスクを実行する必要があり、さまざまなユーザーがこのコンピューターを使用できる場合は、ユーザーごとにタスクを定義する必要があります...クライアントコンピューターでの各ログインは頻繁に変更されるため、わかりません。

誰か助けてもらえますか?

4

1 に答える 1

0

昇格したものを開始するには、ローカルシステムとして実行されるサービスが必要です。これにより、プログラムファイルにアクセスするために必要な権限が付与されます。それでも、サービスは常に実行され、メモリを使用します。

一定期間後に開始するスケジュールされたタスクを作成できます。ただし、UACの確認なしに昇格されたタスクを実行することは可能かどうかはわかりません。

マニフェストでは、昇格した別のアプリケーションを開始することもできます。


基本的に、アップデーターは昇格する必要はありませんProgramData。各ユーザーが書き込み可能な更新ファイルをダウンロードできます。ダウンロードが完了すると、管理者権限を必要とするインストーラーが起動します。

Firefoxは自動更新メカニズムを使用します。新しいバージョンをダウンロードすると、更新を適用するために昇格を求めるプロンプトが表示されます。

Apple Quicktimeは、スケジュールされたタスクを使用してアップデータを起動します。これは、ユーザーがインストールする更新を選択できるインターフェースを提供します。更新ファイルをダウンロードし、昇格のプロンプトを表示してから、更新を適用します。

ユーザーとの対話が必要ない場合は、サービスが最善の策です。

于 2011-09-16T17:17:23.963 に答える