1

ここに私のシナリオがあります、

Outlook アドインがあり、このアドインを介して共通ファイルにいくつかの情報を書き込んでいます。インストール可能ファイルを作成したとき、「すべてのユーザー」(Common Application Data Folder) フォルダーの下に共通ファイルを保持しました。このアドインを XP にインストールすると、完全に正常に動作し、権限の問題もありません。

このアプリケーションを Windows 7 に移行すると、ファイル アクセス許可の例外が発生します。いくつかのブログを参照して、「すべてのユーザー」の下にアプリケーション固有のフォルダーを追加しました。この後も、このファイルに書き込むことができません。

このファイルに書き込むことができるようにするために、他に何かする必要がありますか。

UAC に関するいくつかのブログを読んだことがありますが、アドインでの UAC の使用法を明確に把握していませんでした。

4

2 に答える 2

1

デフォルトでは、標準ユーザーは共通のアプリデータフォルダーへの書き込みアクセス権を持っていません。ユーザーがそこに書き込むことを許可する場合は、サブフォルダーを作成し、適切なACLを適用する必要があります。ACLを作成するための十分な権限がある場合は、インストールの一部としてこれを実行します。

もう1つのオプションは、これらの設定をユーザーごとに保存して、セキュリティの問題を回避することです。

于 2011-12-05T05:59:14.357 に答える
0

ファイルに特定のアクセス許可を追加するには、このために作成したヘルパー拡張機能を使用します (ファイルに対してこれを行うには、適切な特権が必要です)。

public static void AddAccessEveryone(this FileInfo file, FileSystemRights rights, AccessControlType accessType)
{
    FileSecurity access = file.GetAccessControl();
    SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
    access.AddAccessRule(new FileSystemAccessRule(everyone, rights, accessType));
    file.SetAccessControl(access);
}

次のように呼び出します。

file.AddAccessEveryone(FileSystemRights.Read | FileSystemRights.Write, AccessControlType.Allow);

プロジェクトへの参照を追加する必要がありSystem.ServiceModelます。また、ファイルが作成された後に呼び出す必要があります。それより前に呼び出しても意味がありません。

于 2011-12-09T23:12:02.723 に答える