У меня есть служба Windows, которая должна работать под учетной записью SYSTEM.Я использую CommonAppDataFolder в качестве места назначения для содержимого конфигурации конкретного приложения и исходного материала, такого как файлы журналов, файлы шаблонов Excel и т. Д. Служба устанавливается правильно и работает, однако, когда она пытается загрузить файл шаблона Excel, она сталкивается с проблемой,следующее содержание показывает, что служба может получить доступ и записать в файл журнала.Приложение использует NLog в качестве структуры ведения журнала:
Имя приложения: Версия файла приложения: 5.2.0.0 Выпущено: Пользователь: NT AUTHORITY \ SYSTEM | 12: 24: 59 | NT AUTHORITY \ SYSTEM | Информация | AppName -Запущенная служба AppName 2 | 12: 24: 59 | NT AUTHORITY \ SYSTEM | Trace | AppName - извлечение имен аварийных сигналов RTU из файла конфигурации 3 | 12: 24: 59 | NT AUTHORITY \ SYSTEM | Trace | AppName - извлечение условных имен аварийных сигналов из конфигурациифайл 4 | 12: 25: 23 | NT AUTHORITY \ SYSTEM | Debug | AppName - извлеченные запланированные запросы
Файл журнала находится по адресу:
D: \ programdata \ Companyname \ AppName \ Logs
Однако, когда служба пытается получить доступ к файлу шаблона Excel, она генерирует:
System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel не может получить доступ к файлу 'd: \ programdata \ CompanyName\ AppName \ Templates \ PsaDefault.xltm.Есть несколько возможных причин:
• Имя файла или путь не существует.
• Файл используется другой программой.
• Книга, которую вы пытаетесьимя для сохранения совпадает с именем текущей открытой книги.
Ни одна из них не является причиной.Моя непосредственная мысль после этого была: «Хорошо ... общие приложения для учетной записи SYSTEM находятся в другом месте, и это было сделано с помощью быстрого поиска Google по этой теме.Однако, если это так, как служба может записывать и получать доступ к файлу журнала, который находится в точно такой же структуре папок?
Можно ли как-то изменить свой проект WiX, чтобы либо предоставить необходимые инструкции для устранения возможных конфликтов учетной записи «Пользователь вошел в систему» / SYSTEM, либо, в качестве альтернативы, изменить структуру папок на место, где это делает учетная запись SYSTEMне сталкивался с этой проблемой.Существует ли эквивалентный параметр WiX для учетной записи SYSTEM?Или я полностью ошибаюсь в своих предположениях относительно этой проблемы?
Ниже приводится выдержка из моего файла product.wxs (GUID, информация о компании и приложении, перезаписанная заполнителями):
<!-- The following section deals with the deployment of the application data files including logs, templates and userguide elements-->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder" Name="CommonAppData" >
<Directory Id="dirCompanyAppData" Name="CompanyName">
<Directory Id="dirAppNameAppData" Name="AppName">
<Component Id="cmpDirAppNameAppData" Guid="{###}" KeyPath="yes">
<CreateFolder Directory="dirAppNameAppData" />
<RemoveFile Id="PurgeAppnameAppData" Name="*.*" On="uninstall" />
<RemoveFolder Id="idDirAppNameAppData" On="uninstall" Directory="dirAppNameAppData" />
</Component>
<Directory Id="dirAppNameAppDataOutput" Name="Output">
<Component Id="cmpDirAppNameAppDataOutput" Guid="{###}">
<CreateFolder Directory="dirAppNameAppDataOutput" />
<RemoveFile Id="PurgeAppNameAppDataOutput" Name="*.*" On="uninstall" />
<RemoveFolder Id="idDirAppNameAppDataOutputRemove" On="uninstall" Directory="dirAppNameAppDataOutput" />
</Component>
</Directory>