Действительно ли вы на самом деле должны записываться в папку данных Program для каждой системы вместо папок (ов) данных для каждого пользователя?
Возможно, вы захотите взять посмотрите Environment.GetFolderPath
и следующие Environment.SpecialFolder
s:
Environment.SpecialFolder.ApplicationData
- папка данных для данных приложения, синхронизированная с доменом контроллер, если профиль пользователя находится в роуминге Environment.SpecialFolder.LocalApplicationData
- папка данных для данных приложения, локальная и не синхронизированная (полезно для, например, кешей) EDIT:
Протестировано в Windows 7 x64, пользователь без администратора.
var appData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
var myFolder = Path.Combine(appData, "MyApp");
if(!Directory.Exists(myFolder)) Directory.CreateDirectory(myFolder);
File.WriteAllText(Path.Combine(myFolder, "Test.txt"), "Test.");
Это делает то, что ожидается, т.е. записывается в C:\ProgramData\MyApp\Test.txt
. Насколько я могу судить («Командная строка режима администратора»), нет никакой виртуализации UAC.
Двойное редактирование:
Я предполагаю, что произошло то, что в какой-то момент пользователь Administrator записал файлы в вашу папку ProgramData, и, как таковая, виртуализация файловой системы UAC запускается и перенаправляется не-администратор записывает в VirtualStore
.
Выполняется ли ваш деинсталлятор как администратор? Если это так, вам может потребоваться проверить путь VirtualStore
для пользователя, который инициирует удаление, и фактический путь к файловой системе для удаления данных программы. Я не уверен, есть ли официальный способ сделать это, хотя ...
Время тратится на синхронный ACK'инг сообщений в RabbitMQ (MessageAcknowledgingSourceBase#notifyCheckpointComplete
> MultipleIdsMessageAcknowledgingSourceBase#acknowledgeIDs
> RMQSource#acknowledgeSessionIDs
). Вероятно, это можно сделать асинхронно, как это делает коннектор Kafka.
Поскольку интервал между контрольными точками составляет 3 минуты, а я ввожу 200 эв / с, это означает, что каждая контрольная точка вызывает подтверждение 36k сообщений (200 * 60 * 3), что занимает около 500 мс.
Использование меньшего интервала может помочь иметь более предсказуемую задержку за счет более высокой средней задержки.