NET - UACが有効になっているときにアプリケーションを更新できるようにする方法(Windows7 / Vista) -- .net フィールド と windows-7 フィールド と windows-vista フィールド と windows-installer フィールド と uac フィールド 関連 問題

NET - How are applications able to update themselves when UAC is enabled (Windows7/Vista)?












3
vote

問題

日本語

これはシナリオです:

アプリケーションを書き込み、Visual Studioインストーラプロジェクトからインストーラを作成しました(MSIファイルを作成しました)。アプリケーションを管理者としてプログラムファイルディレクトリにインストールしました。

ユーザーがアプリケーションを使用しているとき、私はそれがそれがそれ自体を自動更新することができました(管理者を悩ませずに)。さて、Windows 7とWindows Vistaには、プログラムファイルディレクトリを保護するためのUACがあります。だから、私はここからどこへ行くべきかはわかりません。

私は彼を読んだことが、管理者権限のためにユーザーを悩ませずにアプリケーションにアップデートをインストールできるように読んだと思います。

  1. 自動更新を支援することができるアプリはありますか?
  2. そのようなアプリがある場合は、上昇した権限を迂回することができますか?基本的に、これらのアプリケーションが.NET(C#)で何をするかどうかを複製することはできませんか?

  3. 通常のユーザーが管理上アクセスを行わせたくないため、MSIファイルを使用してサイレントアップデートを実行する簡単な方法をお手伝いします。管理者がこのタスクに悩まされていただきありません。また、ユーザ名とパスワードが簡単に変更できるため、明らかに物事をハードコードすることはできません。

英語

Here's the scenario:

I wrote an application and created an installer from the Visual Studio Installer project (I produced an MSI file). I installed the application into the Program Files directory as an administrator.

When a user uses the application I was hoping it would be able to auto-update itself (without bothering the administrators). Now, Windows 7 and Windows Vista have UAC to protect the Program Files directory. So, I'm not really sure where to go from here.

I think I read somewhere that ClickOnce is able to install updates to the application without bothering the user for administrative permissions.

  1. Are there any apps out there that can assist with auto-update?
  2. If there are apps out there like that, how are they able to bypass the elevated permissions? Basically, wouldn't it be possible to replicate what these applications do in .NET (C#) somehow?

I'm really just hoping for an easy way to use an MSI file to do a silent update because I don't want normal users to have administrative access and I don't want administrators to be bothered with this task. Also, obviously things can't be hardcoded in because usernames and passwords could easily change.

</div
              
 
 

回答リスト

6
 
vote

インストーラとアップデートパッケージが同じデジタル証明書を使用して署名されている場合は、管理者権限を必要とせずにMSIを使用してアプリケーションを更新することができます。

これはUACパッチ適用と呼ばれます。 このはMSDNの関連ページです。

 

It is possible to update your application using MSI without requiring Admin privileges IF the installer and update package are signed using the same digital certificate.

This is called UAC patching. This is the relevant page on MSDN.

</div
 
 
       
       
6
 
vote

それをすることができることは間違いなく仕事をしていることは、ローカルシステムとして実行されているアップデートサービスを作成することです。これは確かにUACをバイパスするでしょう。

もう1つのオプション(サービスを侵略的にインストールする可能性があるため)は、W7タスクスケジューラを介してローカルシステムとしてタスクをスケジュールすることです。

どちらのシナリオでも、これはインストール中に行われなければならず、そうでなければUACは再びトリガされます。

edit :私は別の方法でそれを取り扱う方法について考えたばかりです:あなたはそれをクロムスタイルにすることができます。プログラムファイルには何もインストールしないでください。すべてのアプリケーションバイナリとデータをユーザーフォルダに保存します。このようにして、ユーザーレベルのアクセス許可のみでアップグレードすることができ、UACがトリガーされていない

 

One thing you could do that would definitely work is create an update service running as localsystem. This one would bypass UAC for sure.

Another option (since installing a service might be seen as too invasive) is to schedule a task, again running as a localsystem via W7 task scheduler.

In either scenario, this must be done during install, otherwise UAC will get triggered again.

EDIT: I just thought of another way of handling it: you can do it Chrome style. Don't install anything into program files, keep all application binaries and data in user folder. This way you could upgrade at will with only user-level permissions and no UAC triggered

</div
 
 
     
     
0
 
vote

ClickOnceはアプリケーションをプログラムファイルにインストールしません(たとえば、後でフォルダを検索する必要がある場合は非常に厄介なものです)。これはそれが回避する方法です。 UACを「バイパス」する方法はありません。これはあなたが推薦するものです。インストールフォルダの所有権は、ICACLSとTeakerAntを持つローカルユーザーに提供します。これは、自分自身がゲームをITのフォルダにインストールできるようにするためのSteamが。

edit: SetSecurityInfo を使用して、ローカルユーザーに所有権を与えることもできます。

 

ClickOnce doesn't install your application to program files (which is very annoying if anyone needs to try and find the folder later) which is how it avoids it. There aren't any ways to 'bypass' UAC, this is what I recommend you do: give ownership of your install folder to the local user with icacls and takeown, which is what Steam does to allow itself to install your games into it's folder.

Edit: You can also give ownership to the local user in code with SetSecurityInfo.

</div
 
 

関連する質問

1  昇格された特権を持つWPFアプリケーションの開始は、通常のユーザーとして長い時間がかかります  ( Starting wpf application with elevated privileges takes a long time as a normal ) 
私は管理者権限を必要とする.NET 4.5.2 WPFアプリケーションを持っています。アプリケーションには、アプリケーションが最も高い特権で実行する必要があることを示すマニフェストファイルがあります。 <事前> <コード> <requestedExecutio...

3  必要な場合にのみ特権上昇  ( Privilege elevation only when and if required ) 
私のアプリケーションは時々特権上昇を必要としています...私は管理者として実行されたときにのみ正しく機能するサードパーティのCOMコンポーネントを参照する必要があります。 私のアプリケーションは、それが必要なときだけ特権上昇を要求することを望みます...通常、...

7  ネットワークサービスアカウントでWMIに公開する場合の権限の問題  ( Permissions issue when publishing to wmi under network service account ) 
「ネットワークサービス」アカウントで実行されている.NET Framework 3.5ベースのWindowsサービスにWMI公開を追加しています。 ドキュメント私はMSDN に遭遇しました。 「ネットワークサービス」アカウントでは、デフォルトでWMI公開権限...

17  一般的な書き込み可能なアプリケーションファイルをどこに置くか?  ( Where to put common writable application files ) 
CSIDL_COMMON_APPDATAcompanyproduct は、アプリケーションのすべてのユーザーに共通のファイルを置くための場所、ただし、アプリケーションが変更できますが、これは読み取り専用の場所です。インストーラによって修正された(MSDN(...

26  UACはコンソールアプリケーションに必要です  ( Uac need for console application ) 
管理者レベルを必要とするコードを使用するために必要なコンソールアプリケーションを持っています。私はそのようなマニフェストファイルmyprogram.exe.manifestを追加する必要があることを読んだ: <事前> <コード> <?xml version="...

6  UACダイアログがWin7にポップアップする理由を理解するためのヘルプ  ( Help with understanding why uac dialog pops up on win7 for our application ) 
UACプロンプトを引き起こすように見えるC ++非管理アプリケーションを持っています。それは win7で起こるようです、そしてVistaではなく 残念ながら、UAC DLGはシステムモーダルであるため、デバッガを添付して、そのままMSDEVの下で実行する(...

14  Visual Studio 2010のコンパイル時にマニフェストファイルを埋め込む方法  ( How to embed a manifest file at compile time in visual studio 2010 ) 
次のノードを持つマニフェストファイルを持つプロジェクトがあります。 <事前> <コード> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> ...つまり...

8  管理者権限PROPT C#アプリケーションでポップアップ  ( Admin rights prompt popup in c sharp application ) 
私のアプリケーションには、管理権限が必要な機能があります。 私が欲しいものはその関数を実行するためにボタンをクリックすると、管理者のユーザー名とパスワードを要求する必要があります。 (UACダイアログを起動します。そのボタンにアイコンを表示します。) それは可...

3  ユーザーがファイルをコピーするためのアクセス権がない場合は、UACでプロンプトを表示します。  ( Prompt with uac when user doesnt have access to copy a file ) 
私のアプリケーションでは、ユーザーがファイルを自分の許可を持っていないフォルダにファイルを保存した場合、 File.Copy は失敗します。例は文書をC: rootに保存しています。 アクセスを拒否する代わりに、UACプロンプトでのアクセス許可を高めるようにユ...

2  Windows 7の権限標高?  ( Permissions elevation for windows 7 ) 
iveドライバインストーラEXEファイルを実行する必要があるJavaアプリを手に入れました。 Linuxでは、「Gksudo MyCommand」と入力します。 Windowsのコマンドラインからのアクセス許可を高める方法はありますか? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有