2009-05-22 8 views
2

私はいくつかのデータ(試用版/有効期限)を書く必要があり、UACを搭載したVistaの非管理者アカウントからその場所を読み書きできるようにする必要があります。Windows Vistaでは、すべてのユーザーが表示および変更できるデータはどこに書き込むことができますか?

また、私はどのユーザーアカウントからでもデータを参照して変更することができます。

私はもともとKHEY_CURRENT_USER Registry Hiveへの書き込みと考えましたが、それは各ユーザーごとに一意になります。

他の場所ですか?

私が試した: %ALLUSERSPROFILE%\ TestDirectory

をしかしNonAdmin1は、ファイルを作成し、編集している場合、それが修正されます後に(それがにファイルを読み込むことができますが)、その後のAdmin1は、ファイルを保存することはできません。

答えて

0

ファイルを作成した後、または書き出した後で、「ユーザー」グループのアクセス権を変更してより多くのアクセス権を持つことができるはずです。 "Creator Owner"がフルアクセス権を取得し、 "Users"グループのみが&の読み取りを取得するように見えます。

「TestDirectory」ディレクトリを作成し、インストール中にUsersグループをフルアクセスできるように設定することもできます。

+0

どのようにプログラムで権限を変更しますか?おそらくCACLS? IIRCでは、管理者権限が必要です。 –

+0

ファイルの作成者には通常、特別な権限があります。私は、UACの標高を必要とせずに、c:\ ProgramDataで作成したフォルダにUsersグループの書き込み権限を追加することができました。私は何らかのパーミッションをプログラミングしてからしばらくしています: – crashmstr

1

ブログの投稿があります:blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx(私はまだハイパーリンクすることは許されていません。修正されるまでカットアンドペーストしなければなりません)。

実際には、特定の質問を中心にしているようです。すべてのユーザーが書き込み可能とするファイルを持っている場合、エクスプローラでファイルを検出してダブルクリックするか、ファイルを非表示にし、アプリケーションでバックグラウンドでのみ使用するようにします。

すべてのユーザーがエクスプローラでファイルを検出できるようにするには、おそらくc:\ users \ publicに配置します。あなたがしなければならないことは、それらをその場所に置くことであり、デフォルトのセキュリティが機能するはずです。

ファイルをユーザーに表示しないようにするには、おそらくc:\ programdataにファイルを格納します。この場合、ファイルを作成するときにデフォルトのセキュリティが正しくない可能性があるため、アプリケーションにファイルをACLにする必要があります。それとも、セットアッププログラムでc:¥programdataの下にアプリケーション用のディレクトリ構造を作成し、セットアッププログラムで各ディレクトリのデフォルトACLを適切に設定しておくとよいでしょう - 実際にACLを設定することについて申し訳ありませんファイルを作成するだけで、適切な場所にファイルを作成するだけです。

すべての場合、適切なWin32(または.Net Framework)関数を呼び出して、c:\ programdataまたはc:\ users \ publicディレクトリへのパスを取得する必要があります。あなたのアプリでそれらのパスをハードコードしないでください - あなたがハードコードをすると、ユーザがディレクトリを移動したり、Windowsを何か珍しい方法でインストールした場合、あなたのアプリケーションが壊れることがあります。

関連する問題