Excel 如何访问/系统帐户下Windows服务的WiX CommonAppDataFolder参数是多少
我有一个Windows服务,需要在系统帐户下运行。我使用CommonAppDataFolder作为特定于应用程序的配置内容和源材料(如日志文件、Excel模板文件等)的目标。。。该服务正确安装并运行,但是当它尝试加载Excel模板文件时遇到问题,以下内容显示该服务能够访问和写入日志文件。应用程序使用NLog作为日志框架: 应用程序名称:AppName文件版本:5.2.0.0发布:用户:NT权限\系统 |12:24:59 | NT AUTHORITY\SYSTEM | Info | 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”。有几个可能的原因: •文件名或路径不存在 •另一个程序正在使用该文件 •您试图保存的工作簿与当前打开的工作簿同名 这些都不是原因。我当时的想法是,好吧。。。commonappdata for SYSTEM account位于不同的位置,这是bourne在这个主题上快速搜索出来的。但是,如果是这种情况,服务如何能够写入和访问日志文件,而日志文件位于完全相同的文件夹结构下 是否有一种方法可以修改我的WiX项目,以提供必要的说明来覆盖可能的“登录用户”/系统 帐户冲突,或者将文件夹结构更改为系统帐户不会遇到此问题的位置。系统帐户是否有等效的WiX参数?还是我对这个问题的假设完全错了 以下是my product.wxs文件的摘录(GUID、公司和应用程序特定信息被占位符覆盖):Excel 如何访问/系统帐户下Windows服务的WiX CommonAppDataFolder参数是多少,excel,visual-studio-2013,wix,Excel,Visual Studio 2013,Wix,我有一个Windows服务,需要在系统帐户下运行。我使用CommonAppDataFolder作为特定于应用程序的配置内容和源材料(如日志文件、Excel模板文件等)的目标。。。该服务正确安装并运行,但是当它尝试加载Excel模板文件时遇到问题,以下内容显示该服务能够访问和写入日志文件。应用程序使用NLog作为日志框架: 应用程序名称:AppName文件版本:5.2.0.0发布:用户:NT权限\系统 |12:24:59 | NT AUTHORITY\SYSTEM | Info | AppName
建议:简而言之,将模板移动到以下位置:%ALLUSERSPROFILE%
文件/文件夹ACL:用户的实际ACL设置 配置文件文件夹本身可能是原因。你能试着跑吗 从
%ALLUSERSPROFILE%
下的某个地方?默认情况下应该是可写的吗
在现代Windows系统上,通常映射到:
C:\ProgramData
(在其他地方的旧系统上)。我认为系统
帐户应该在这里拥有完全访问权限?试一试
测试路径:要测试该路径:Windows键+点击R。粘贴
%ALLUSERSPROFILE%
,然后按OK
另外:打开一个cmd.exe
并转到“设置
”(不带引号)以查看环境变量及其值。可能会有帮助。只是为了方便而添加(这是众所周知的)
DCOM权限:COM服务器具有启动的相关权限。帮助您调试的一些工具和注释:
- 默认值:在:
中设置了一些默认的DCOM权限comexp.msc
- 启动:Windows键+点击右键。粘贴
,然后按OKcomexp.msc
- 右键单击我的电脑=>
=>属性
COM安全
- 我没怎么看过这些设置。很多灵活性,很少有意义的事情
- 启动:Windows键+点击右键。粘贴
- 特定的:也可以在注册表中为每个COM类设置特定的权限。是否可以使用
(或直接使用oleview.exe
)进行检查regedit.exe
- 在Windows SDK文件夹中查找oleview.exe。在以下目录下搜索磁盘:
%ProgramFiles(X86)%\Windows Kits\[SDK-VERSION-NUMBER-HERE]\bin
- 找到您的类(下面的示例:
)。请参阅脚本编写.字典
的“启动权限”和
的“访问权限”选项卡
- 在Windows SDK文件夹中查找oleview.exe。在以下目录下搜索磁盘:
%ALLUSERSPROFILE%
文件/文件夹ACL:用户的实际ACL设置 配置文件文件夹本身可能是原因。你能试着跑吗 从
%ALLUSERSPROFILE%
下的某个地方?默认情况下应该是可写的吗
在现代Windows系统上,通常映射到:
C:\ProgramData
(在其他地方的旧系统上)。我认为系统
帐户应该在这里拥有完全访问权限?试一试
测试路径:要测试该路径:Windows键+点击R。粘贴
%ALLUSERSPROFILE%
,然后按OK
另外:打开一个cmd.exe
<!-- 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>