1

管理者としてのみインストールして実行する、Windows XP 用の .Net WinForms アプリ用の MSI インストーラーがあります。ユーザーは、実行時にアプリにログインする必要があります。顧客は、Vista のユーザー アカウントでインストールして実行し、Windows アカウントを使用することを望んでいます。

コードを予備的に見てみると、多くの問題が見られます。インストーラーはレジストリに書き込み、アプリを C:\Program Files にインストールします。アプリはユーザー設定をレジストリに保存し、データを C:\Documents and Settings\All Users\ に書き込み、C: に一時ファイルを作成します。

最初にすべきことは、データ ファイルを System.Environment.CommonApplicationData に格納し、ユーザー設定を System.Environment.LocalApplicationData に格納することだと思います。ユーザー アカウントは System.Environment.ProgramFiles にアプリをインストールできますか?

問題は、アプリがすべてのユーザーによってインストールおよびアンインストール可能である必要があり、すべてのユーザーが同じデータ ファイルを共有することです。各ユーザーには独自の好みがあります。

Vista で複数のユーザーのルールに従う WinForms アプリを構築するために何が必要かを詳しく説明している書籍または Web サイトはありますか?

編集: クライアントに確認したところ、ユーザー アカウントとしてのみインストールするという要件が確定しており、フロア スタッフから管理者アクセスを削除しています。これにより、管理者がインストールしたコンポーネントとマシンごとのインストールが除外されます。

フロア マシンがリモート経由で接続する管理マシンで実行される別のデータ アプリを作成することを考えていました。すべてのクライアント データは、このマシンに保存されます。ただし、このアプリもユーザー アカウントでインストールして実行する必要があります。

Vista ユーザー アプリが従わなければならないすべてのルールを説明している書籍またはサイトはありますか?

4

3 に答える 3

1

アプリケーションを任意のユーザーがインストールし、同時に共有データ ファイルにアクセスすることを許可すると、問題が発生します。これは、最初の要件はユーザーごとのインストールを意味するのに対し、2 番目の要件はマシンごとのインストールを意味するためです。説明させてください...

標準 (MSI ベース) のインストーラーは、ユーザーごとまたはコンピューターごとにスコープを設定できます。

  • ユーザーごとのインストールでは、インストールされたプログラム ファイルがユーザーのホーム ディレクトリのどこかに置かれます。アプリケーションはそのユーザーに対してのみインストールされます。他のユーザーは、スタート メニューや [プログラムの追加と削除] にそのプログラムを表示することさえできません。プログラムが必要な場合は、自分でユーザーごとの領域にインストールする必要があります。したがって、プログラムの複数のコピーがインストールされている可能性があり、それぞれが他のコピーから分離されています。このタイプのインストールは、通常の (管理者以外の) ユーザーが実行できます。そのため、"Program Files" や "All Users" などの共有領域に書き込むことはできません。
  • マシンごとのインストールでは、ファイル システムの共有領域 (つまり、「プログラム ファイル」または「すべてのユーザー」) を変更できます。各ユーザーは、スタート メニューと [プログラムの追加と削除] に同じプログラムのコピーを表示します。このタイプのインストールを実行できるのは管理者ユーザーのみです。
于 2008-09-26T21:15:59.897 に答える
1

「アプリは、すべてのユーザーがインストールおよびアンインストールできる必要があります」「すべてのユーザーが同じデータ ファイルを共有します」

これらの要件の両方を満たさなければならないことに問題が生じるでしょう。Vista の新しいセキュリティ機能は、ユーザーが互いに (およびシステムを) 踏みにじるのを防ぐように設計されています。

これを機能させるために私が考えることができる唯一の方法は、Windows 2000 環境でそのような要件を処理した方法と同様の方法です。アプリのユーザー部分と、ユーザー間で共有される情報を管理するシステム コンポーネントの 2 つのコンポーネントを作成します。管理者が「共有」コンポーネント (それを実行するための Windows サービスを含む) をインストールし、各ユーザーが「ユーザー」コンポーネントをインストールします。

あなたのシナリオではうまくいくかもしれませんが、それらのファイルに直接アクセスするのではなく、共有ファイルを使用してサービスと通信するコードを作り直す必要があります。

もちろん、ユーザーが管理者として実行するツールを使用して、特定の場所にフォルダーを作成し、必要なセキュリティ権限を付与することもできます. それはあなたの目的にも役立つかもしれません。

于 2008-09-26T21:09:40.850 に答える
0

みんなありがとう。クライアントに確認したところ、ユーザー アカウントとしてのみインストールするという要件が確定しており、フロア スタッフから管理者アクセスを削除しています。これにより、管理者がインストールしたコンポーネントとマシンごとのインストールが除外されます。

私たちの解決策は、アプリ用に新しい標準ユーザー アカウントを作成することでした。アプリを使用する必要があるスタッフは、このユーザーとしてログオンする必要があります。これは実際には、ユーザー間でデータを共有するよりも優れていることが判明しました。同じマシン上で異なるクライアント用にアプリをホストできるようになったからです。

また、Windows でマルチユーザー アプリを作成するための参考資料として、Microsoft Windows 7 Client Software Logo Technical Requirementsドキュメントも見つけました。

于 2008-09-29T17:17:19.603 に答える