3

私のアプリケーションは管理タスクを実行することを想定していないため、通常のユーザー アカウントで実行できるようにしたいと考えています。唯一のことは、私のアプリケーションはデータベースファイルから読み書きするということです。Windows 7 (または Vista) を実行しているユーザーがアプリをドライブ C にインストールした場合、ドライブの既定のアクセス許可セットの構成では、アプリがデータを書き込むことができません。

完全な管理者権限を必要とせずに、アプリに C: への書き込みを許可するにはどうすればよいですか?

4

5 に答える 5

1

UAC (ユーザー アカウント アクセス) を開き、セキュリティ スライダーを一番下に設定する必要があります。その後、Windows XP で行ったように、ドライブ C: にアクセスできます。

于 2011-05-12T17:39:25.883 に答える
1

インストール時にデータベース ファイルが存在する場合は、インストール プロセスの一環として、ファイルへの書き込みアクセス権をユーザーに付与するだけで済みます (通常のユーザーは、既定ではこのアクセス許可を持っていません)。プログラムでファイルを作成する必要がある場合、プログラムを実行しているユーザーは c ドライブのアクセス許可を変更する必要がありますが、これはお勧めできません。

于 2010-03-01T11:57:57.403 に答える
1

db ファイルを Documents and Settings / App data / your app / directory に保存することをお勧めします。この目的のために特別に存在します。C:/Program Files への書き込みはあまりお勧めできません。あなたのケースでそれが可能であれば、それはそうです。

于 2010-03-01T12:01:00.593 に答える
0

セットアップ プロセスでディレクトリのアクセス許可を変更することにしたので、起動パスのアクセス許可を変更し、すべてのユーザーがそのパスにアクセスできるようにする .exe ファイルを作成しました。その .exe ファイルを展開プロジェクトに含め、インストールのコミット フェーズでファイルを実行するカスタム アクションを作成しました。

セットアップはインストール時にユーザーに管理者権限を要求するため、私の .exe も管理者権限を享受し、インストール ディレクトリのアクセス許可を変更できます。

私の .exe では、Process インスタンスを使用して、Windows に付属の ACL ユーティリティ (icacls.exe) を次のように実行しました。

ICACLS.EXE [TargetDir] /T /C /grant Users:F

([TargetDir] が「\」で終わっていないことを確認してください。そうしないと、呼び出しが失敗します。)

これにより、すべてのユーザーにターゲット ディレクトリへのフル コントロール アクセスが付与されます。.NET コードを記述して、ディレクトリのアクセス許可を手動で変更することもできますが、私は少し怠け者です!

ただし、環境の状態を徹底的に調査して、環境内のセキュリティ ホールにならないようにすることもできます。しかし、これは私に適していました。

これが同じ問題に直面した他の人に役立つことを願っています。

于 2010-12-18T14:38:51.877 に答える
-1

デフォルトでは、ユーザーはドライブ C: への書き込み権限を持っている必要があります。そうでない場合は、読み書きするディレクトリを、ルートではなく実行中のディレクトリ (C:/Program Files/Your App/) に変更する必要があります。 Cの:

あなたはこれを得ることができます

String Path = Path.GetDirectoryName(Application.ExecutablePath);
于 2010-03-01T11:55:58.640 に答える