我有一个装有 Windows Server 2012 R2 且具有所有最新更新的 EC2 实例。
我首先创建了一个服务,然后创建了一个任务来运行批处理文件以创建 Microsoft Word 报告(使用我的自定义 C# 程序)。我将任务设置为以最高权限运行并以管理员身份运行。虽然我的批处理文件确实被调用,但它失败了。我的批处理文件:
C:/WordGenerator.exe C:/report.docx > C:/word.log 2>&1
由于 exe 出现异常而出错:
Failure
System.NullReferenceException: Object reference not set to an instance of an object.
at InteropFunctions.Save(String opath)
at Reporting.Report.generate()
at Reporting.WordGenerator.run()
如果我手动运行批处理文件,它就可以正常完成。
当 C# Word 互操作函数尝试打开已制作的报告进行进一步处理时,会发生上述异常(因此它实际上没有权限 - 无法找到它)。
到目前为止我了解到的是,Windows 可能仍以本地系统帐户运行所有服务,并动态登录到给定的用户(如果有)。
我还了解到服务可能在与常规管理员命令不同的会话/安全环境中运行。
有人能帮忙找到一个可行的解决方案吗?我需要在启动时以管理员身份运行批处理文件(无需登录)。我愿意模拟登录。由于这实际上不是以管理员身份运行的(我给出的只是一个简单的案例),我们遇到了其他问题。设置图片:
答案1
失败的原因在于 Windows 中的 DCOM。我将我的设置为以管理员身份运行(在“身份”部分)。