gpt4 book ai didi

excel - Interop Excel Automation - 使用服务帐户打开工作簿

转载 作者:行者123 更新时间:2023-12-03 02:10:53 24 4
gpt4 key购买 nike

我现在面临这样的情况,需要一些反馈或建议。我获得了一个作为服务运行的应用程序,具有特定的服务帐户(不是服务器上的管理员帐户),并尝试打开 Excel 工作簿。

问题不在于初始应用程序,因为我可以使用下面的通用 C# 代码(嵌入到服务结构中)重现它:

try{
this._exApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
this._exApp.Visible = false;

Log.Logger.Info("Opening workbook...");
Workbook workbook = this._exApp.Workbooks.Open(
thisFileName,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing
);
Log.Logger.Info("Workbook opened!");

//Do something with the result
Log.Logger.Info("Closing workbook...");
workbook.Close(false, thisFileName, null);
Marshal.ReleaseComObject(workbook);

this._exApp.Quit();
}
catch(Exception ex){
Log.Logger.Error(ex.Message);
}

(*this._exApp* 和 thisFileName 没有什么特别的,它们只是分别转换为 Microsoft.Office.Interop.Excel.Application,并作为带有文件路径的字符串打开。Log.Logger 是一个使用 log4net 的记录器类,让我可以看到问题何时发生)

该服务作为服务帐户运行,该帐户是服务器上的用户,而不是管理员。它可以访问目标文件和服务器上的文件(作为读取访问权限)。服务器是 Windows Server 2003 标准版 SP2(尚未在 2008 R2 服务器上尝试)。

我面临的问题是,它在尝试打开工作簿时挂起,因此在跟踪最后一行时,我是“打开工作簿...”,永远不会到达“工作簿已打开”行。不会引发任何异常。

所以代码很简单,只是尝试打开一个Excel工作簿。我已经做了一些调查,以下是我的发现:

  • 我知道 Microsoft 不支持服务器端 Excel 自动化,但我已获得该服务,并且无法选择所使用的技术。
  • 我已配置所有组件服务/DCOM/Microsoft Excel 应用程序安全设置,以便服务帐户拥有所有可能的权限。
  • 如果服务帐户是计算机上的本地管理员,则服务可以正确执行作业。这并不是真正的生产选项。
  • 如果服务尝试打开的文件是本地文件,则该服务会正确执行作业。不幸的是,我们尝试访问的文件位于远程文件服务器上,在这种情况下它不起作用。
  • 上面的代码在远程文件上使用同一用户从命令行运行可以正常工作,但作为服务运行时就不行了。
  • 我已阅读有关 C:\Windows\System32\config\systemprofile\Desktop 错误的信息,但该文件夹存在。
  • 使用服务帐户启动时可以正确打开 Excel。

基本上,情况是 Workbooks.Open 方法在作为服务运行时、在非管理员的服务帐户下以及访问远程文件时挂起。

如果您对此主题有任何意见或想法,我将不胜感激。

谢谢。

乔纳森

编辑:根据下面马特的解决方法,我们已经实现了远程文件的本地副本,因此我接受它作为答案,但我仍然对有关如何使其直接在远程文件上工作的任何建议感兴趣。

最佳答案

不管你是否疯狂,你需要创建以下文件夹

C:\Windows\System32\config\systemprofile\Desktop(32位)C:\Windows\SysWOW64\config\systemprofile\Desktop(64位)

与使用系统帐户通过 Scheduler 运行 Excel 相关...

关于excel - Interop Excel Automation - 使用服务帐户打开工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com