1

私は小規模オフィスが金銭勘定を維持するためのアプリケーションを開発しています。私のアプリケーションは、すべての情報を保存できるファイルを作成するのに役立ちます。ただし、アプリケーション以外のユーザーがアクセスできないようにする必要があります。なんで?誰かがファイルを削除する可能性があるため、すべての記録が消えてしまいます。環境は、管理者権限を持つ単一のアカウントを持つ Windows PC です。MinGW コンパイラを使用して C++ でアプリケーションを開発しています。そのようなファイルを作成する方法について、私は今のところ空白のようです。何か提案はありますか?

4

4 に答える 4

4

アプリケーションがそれを変更できる場合、それを実行する資格証明を持つユーザーはそれを変更できます。また、彼が管理者権限を持っている場合、アプリケーションが別の資格情報で実行され、ファイルが ACL によって保護されていても、彼が何かを削除するのを止めることはできません。

さて、問題はセキュリティではなく、ユーザーを自分自身から保護することであるように思われるので、ファイルを十分に「見えない」場所に保存して、それに満足するだけです。%APPDATA%\yourappname1にデータを書き込みます。このようなディレクトリは、ユーザーが直接触れることを意図していないユーザー固有のアプリケーション データ専用です。

偏執的になりたい場合は、見つけられるすべてのセキュリティ設定を有効にすることができます (ディレクトリを非表示にする、アプリが実行されていないときに制限付き ACL で保護する、排他的アクセスのために開くなど)。時間を無駄にしただけです:

  • 平均的なユーザー (私たちのターゲットである AFAICT) は、そもそも隠しフォルダーであるため、appdata をいじることはありません。
  • セキュリティ設定はあなたの状況では簡単に回避できるため、いじり回す「パワーユーザー」は、自分の足を撃つ(または自発的に損傷を与える)ことが十分に決定されている場合、方法を見つけるでしょう(管理者は任意のファイルの所有権を取得し、 ACL を変更し、Unlocker などのアプリケーションを使用してファイルのロックを回避します)。
  • ファイルにアクセスする正当な理由がある技術者 (たとえば、ファイルのバックアップを取得/復元する必要がある) は、これらすべての無駄な予防策に不満を感じるでしょう。

  1. 実際の%APPDATA%パスは、対応する環境変数を展開するか、SHGetFolderPath/SHGetKnownFolderPath (または新しい Windows バージョンで発明されたもの) を介して取得できます。
于 2013-10-02T03:16:13.977 に答える
1

dwShareModeアプリケーションが Windows の起動時にロードされ、 0 オプションでファイルが開かれることを確認してください。

これはMSDNの例です

于 2013-10-02T03:12:41.160 に答える
0

ただし、アプリケーション以外のユーザーがアクセスできないようにする必要があります。

それをしてはいけない。

ユーザーが物理的にアクセスできるマシン上に存在するものはすべて、ユーザーが十分な決断を下せば削除できます。

プログラムの実行中にファイルが削除されないように保護できます。Windows では、開いているファイルを削除できません。ファイルを開いたままにしておくと、プログラムの実行中に他の人がファイルを削除することはありません。代わりに、タスク マネージャーを介してプログラムを強制終了し、とにかくファイルを削除します。

それか、どこかにアップロードすることができます。物理的にアクセス可能なデバイス上にないデータは、ユーザーが簡単に削除することはできません。ただし、誰かがサーバーを実行する必要があります (およびセキュリティに対処し、場合によってはサーバー ソフトウェアを作成する必要があります)。あなたの場合、それは価値がないかもしれません。

ユーザー データの場所をヘルプ ファイルに記録することをお勧めします。おそらく、このファイルを含むフォルダーに「!do not delete this.txt」または何かを配置する必要があります。

于 2013-10-02T04:12:30.343 に答える
0

これらのファイルには、独自のファイル拡張子と、おそらく他のセキュリティ対策 (つまり、ファイルへのパスワード) を付ける必要があります。これらのファイルが Windows によって提案されるようにするには、レジストリを操作する必要があります。

Windows のみに関心があるため、ここに良い情報源があります。

http://msdn.microsoft.com/en-us/library/windows/desktop/ff513920(v=vs.85).aspx

データが削除されないようにする限り、私の友人の冗長性を冗長化します。データを安全に保つ方法について、ネットワーク管理者に相談してください。私は彼らが理由の 1 つとして多くのバックアップを挙げていることにお金を賭けるでしょう。

于 2013-10-02T03:16:56.823 に答える