Есть ли папка как в WinXP, так и в WinVista, к которой у всех пользователей есть права на запись?

StackOverflow https://stackoverflow.com/questions/81686

  •  09-06-2019
  •  | 
  •  

Вопрос

У нас есть СЕТЕВОЕ приложение, которое устанавливается в папку Program Files.Само приложение записывает некоторые файлы и создает некоторые каталоги в свою папку приложения.Но когда обычный пользователь Windows пытается использовать наше приложение, оно выходит из строя, потому что у этого пользователя нет прав на запись в папку приложения.Есть ли какая-либо папка как в WinXP, так и в WinVista, к которой все пользователи имеют права на запись по умолчанию?Вся папка пользователя или что-то в этом роде?

Это было полезно?

Решение

Такой папки не существует.

Но вы можете его создать.

Существует CSIDL_COMMON_APPDATA, который в Vista сопоставляется с %ProgramData% (c:\ProgramData), а в XP сопоставляется с c:\Documents и Settings\AllUsers\Application Data

Не стесняйтесь создать там папку в вашем установщике и установить ACL, чтобы каждый мог записывать в эту папку.

Имейте в виду, что COMMON_APPDATA был реализован в версии 5 библиотеки common controls, что означает, что он доступен в 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;

Другие советы

Я не уверен, что существует единый путь, на запись по которому все пользователи, не являющиеся администраторами, имеют разрешение.

Я думаю, что правильным было бы <User>\Application Data

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top