3

XPでかなりうまく機能するアプリケーションを作成しましたが、おそらくユーザーデータが書き込まれている場所が原因で、VistaおよびWindows7への移行に深刻な問題が発生しています。

ユースケースは次のとおりです。個々のユーザーはマシンにログインし、それを使用してデータを取得する必要があります。スーパーバイザーユーザーは、個々のユーザーの肩越しに見て、自分の仕事が適切に実行されていることを確認できる必要があります。これらのスーパーバイザーは、システムログをチェックして、システムが正しく実行されていることを確認する必要もあります。

XPでこれらのタスクを実行する方法は、C:\ドライブ上のフォルダーに直接書き込むことでした。それは悪い習慣かもしれませんが、そうではないかもしれませんが、基本的に、システムのすべてのユーザーがこのデータに共有データとしてアクセスできる必要がありました。プログラムの一部のインストールでは、ITの状況がまったく安全ではなく、コンピューターのユーザーが1人で、各個人が個別にプログラムにログインしていました。プログラムの他のインストールでは、ITスタッフは有能であり、ユーザーごとに異なるログインがありますが、各ユーザーは引き続きC:にアクセスでき、各ユーザーは必要に応じて他のユーザーを確認できます。

Vista / Windows 7では、すべてが変更されます。ITスタッフがすべてを個々のユーザーに固定している場合でも、これらのユーザーはこの共通データを共有する必要があり、アプリケーション固有の構成パラメーターとユーザーリストをアプリケーションのディレクトリに書き込むことは許可されていません。システムがドメインのある場所にある場合、ユーザーにはローカル管理者権限がなく、インストールでさえ問題になる可能性があります。

これに対する解決策は、インストーラーにすべてのユーザーが書き込めるディレクトリを作成させ、そのディレクトリにすべてのユーザー固有のデータを配置させることですか?もしそうなら、インストーラーにそのように動作させることは可能ですか(管理者権限を付与する必要がある場合でも)?または、Vista / 7をよりリベラルなXPの方法で動作させる方法はありますか?

4

5 に答える 5

1

最も信頼のおけるリソースは、「MSDNの各Windowsバージョンのアプリケーション仕様のデータと設定の管理」です。これを読んで、Windowsに存在するさまざまな特別なフォルダの背後にある理論的根拠と、データを書き込むフォルダを選択する方法を確認してください。

次に、アプリケーションはSHGetSpecialFolderLocation APIを使用して、特別な場所へのパスを取得する必要があります。

ほとんどのlikleyがニーズに対応するフォルダー(1人のユーザーによって書き込まれ、管理者によって読み取られる)は、CSIDL_APPDATAWindows6.Xでは次のようになります。C:\ProgramData\

デフォルトでは、この場所に作成されたフォルダーの権限は、管理者と所有者(つまり、フォルダーを作成したユーザー)に対して完全に制御され、Usersグループのメンバーへの読み取り専用アクセス権があります。

完全に別の演習では、ディレクトリのアクセス制御リスト(ACL)を変更するために必要なコードを記述します。選択した場所のデフォルトの権利が目的に十分でない場合に必要になるもの。

于 2009-07-03T15:15:15.760 に答える
1

アプリの一部は、システムサービスおよびそれ自体のユーザーとして実行される可能性があります。そうすれば、人間のユーザーから離れた場所に独自の安全なストアを置くこともできます。これにより、ユーザーが通常の範囲外のアクセス許可でプログラムを実行するという包括的な必要性もなくなります。

アプリの実際のユーザースペース部分は、サービスに接続して、単純なストレージ/取得操作を実行できます。

于 2009-07-14T00:37:35.437 に答える
0

XPでこれらのタスクを実行する方法は、C:\ドライブ上のフォルダーに直接書き込むことでした。多分それは悪い習慣です、多分そうではありません

間違いなくそうです。「C:\ Users \ Public\PublicDocuments」が適切な場所です。NTFS ACLを使用して、ファイルの読み取りと書き込みができるユーザーを制御します。

于 2009-07-01T00:33:33.930 に答える
0

デフォルトでは、すべてのユーザーが書き込みアクセス権を持つディレクトリはありません(システム全体のTEMPディレクトリを除きますが、ログ情報をそこに書き込むことはしません)。

インストールプログラムを管理者権限で実行すると、そのようなディレクトリが作成され、全員に書き込み権限が付与されます。最も論理的な場所はALLUSERSPROFILEC:\Documents and Settings\All UsersXP、C:\Users\PublicVista / 7の場合)です。

もう1つの非常に単純な解決策は、すべてのユーザーに自分のプロファイル内のディレクトリ(たとえば、)にログインさせることApplication Data\Your Appです。すべてのログ情報は、管理アプリによってかなり簡単に集約できます。読み取り権限がロックダウンされていない場合、ユーザーは必要に応じて互いのデータを読み取ることもできます。

于 2009-07-03T18:50:31.847 に答える
0

ネットワーク上のどこかにデータを保存したほうがいいのではないでしょうか。このようにすると、セキュリティを1回設定するだけで済み、保守が簡単になります。スーパーバイザーは多くのPCのデータを簡単に読み取ることができ、個々のPCにアクセスする必要はありません...

于 2009-07-24T07:33:47.233 に答える