Где хранить файлы журналов, которые могут быть сгенерированы как процессом с низким уровнем целостности, так и службой Windows? - PullRequest
1 голос
/ 30 марта 2011

Вкратце: Существует ли в Windows стандартная папка , которая 1) доступна для записи процессами с низкой целостностью 2) независимо от пользователя запуск процесса?


На Stack Overflow есть несколько вопросов о расположении файлов журналов, но я думаю, что моя проблема немного другая.

МойПриложение состоит из двух основных компонентов: ActiveX, который работает под IE и, следовательно, имеет низкую целостность, и службы Windows.Оба они генерируют журналы, и я хотел бы хранить все в одном месте.

Я пытался использовать SHGetKnownFolderPath(FOLDERID_LocalAppDataLow).Это нормально для ActiveX, но Windows возвращает следующую папку для моего сервиса: C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\.Это плохо по ряду причин.

Я тоже не могу использовать %AllUsersProfile% или% APPDATA%, потому что процессы с низким уровнем целостности не имеют разрешения на запись.

Я имеюПодумал о том, чтобы мой сервис узнал о вошедшем в данный момент пользователе и вручную попал в папку LocalLow, но их может быть 0 или много, так что это также будет проблемой.

1 Ответ

0 голосов
/ 30 марта 2011

Я бы все равно выбрал% ALLUSERSPROFILE%. По этому пути вы обычно создаете папку для названия вашей компании, а затем папку для продукта. Обычные учетные записи пользователей без прав администратора могут записывать в% ALLUSERSPROFILE%, но для вашего конкретного сценария, если ACL по умолчанию не достаточно хороши, вы всегда можете изменить разрешения для каталога для вашего конкретного приложения во время установки.

Мы развернули нечто очень похожее на то, что у вас есть (элемент управления ActiveX, работающий в IE, а также набор служб и обычных приложений), и именно здесь мы без проблем храним наши журналы.

...