1

ProgramFilesフォルダーにインストールされるNETアプリがあります。アプリ自体がいくつかのファイルを書き込み、アプリフォルダーにいくつかのディレクトリを作成します。しかし、通常のWindowsユーザーがアプリケーションを使用しようとすると、そのユーザーにはアプリフォルダーへの書き込み権限がないため、クラッシュします。WinXPとWinVistaの両方に、すべてのユーザーがデフォルトで書き込み権限を持っているフォルダーはありますか?すべてのユーザーフォルダまたはそのようなもの?

4

2 に答える 2

2

そのようなフォルダはありません。

しかし、作成することはできます。

Vista では %ProgramData% (c:\ProgramData) にマップされ、XP では c:\Documents and Settings\AllUsers\Application Data にマップされる CSIDL_COMMON_APPDATA があります。

インストーラーで自由にフォルダーを作成し、ACL を設定して、誰もがそのフォルダーに書き込めるようにしてください。

COMMON_APPDATA はバージョン 5 のコモン コントロール ライブラリに実装されていることに注意してください。これは、Windows 2000 以降で使用できることを意味します。NT4 では、そのフォルダをインストール ディレクトリに作成できます。Windows 98 以下では、これらのシステムには許可システムがないため、いずれにしても問題ありません。

そのフォルダーを作成する InnoSetup コードのサンプルを次に示します。

[Dirs]
Name: {code:getDBPath}; Flags: uninsalwaysuninstall; Permissions: authusers-modify

[Code]


function getDBPath(Param: String): String;
var
   Version: TWindowsVersion;
begin
  Result := ExpandConstant('{app}\data');
  GetWindowsVersionEx(Version);
  if (Version.Major >= 5) then begin
    Result := ExpandConstant('{commonappdata}\myprog');
  end;
end;
于 2008-09-17T10:22:15.913 に答える
0

管理者以外のすべてのユーザーが書き込みを許可されている単一のパスがあるかどうかはわかりません。

正しいのは<User>\Application Data

于 2008-09-17T10:16:45.023 に答える