【问题标题】:Why Batch Process not working by Task Scheduler User Administrator?为什么任务计划程序用户管理员无法使用批处理?
【发布时间】:2017-08-24 22:27:41
【问题描述】:

我有一个 ETL 流程,在一个 .bat 文件中:

  • 将 .xlsx 文件复制到目录
  • 按进度打开excel文件
  • 将信息复制到进度数据库

当我由用户运行 .bat 文件时:资源管理器中的 TableauAdmin:

  • 效果很好!
  • TableauAdmin 显示为 .log 文件的所有者

然后,我在 Windows Server 2012 中创建了所有者:TableauAdmin 和运行该任务的用户:TableauAdmin 的计划任务。具有最高权限,无论用户是否登录...

如果我尝试运行任务,我会收到此错误:

访问组件属性/方法时发生错误:打开。 Microsoft Excel 无法访问该文件 'd:\ses\dat\FacturaMes-240817.xlsx'。有几种可能 原因:错误代码:0x80020009 d:\ses\pro\sescargaexcelbd.p (5890)

现在,.log 文件的所有者是用户“Administrators”。

另外,我在日志文件中写入 %USERNAME% 并显示为“TableauAdmin”!!!

无法通过将帐户 TableauAdmin 更改为包含 TableauAdmin 的管理员来使用 progress-office-excel 选项。

对每一件事进行什么更改都可以正常工作?

今天我将运行任务的用户更改为管理员...

现在一切正常,但运行它的用户并没有显示为管理员,

运行该进程的用户是另一个管理员....

  • 因此 Excel 文件归管理员所有
  • 由管理员打开
  • 但由其他管理员运行,而不是 TableauAdmin....

为什么现在运行正常?

【问题讨论】:

  • And now, the owner of the .log files, is the user "Administrators". 嗯 - 这就是你的线索。批处理在 administrators 用户下运行,因此环境设置将是 that 用户的设置,而不是 Tableauadmin 的设置。更改任务计划程序中的用户或将批处理中的环境变量设置为套件 Tableauadmin 的那些(但在这种情况下,日志仍将归 Administrators 所有)
  • 无论用户是否登录都安排任务运行意味着调度程序服务在会话 0(服务)中执行它。此会话与创建用户界面是隔离的,很多 GUI 应用程序都会失败,这可能包括 MS Excel。
  • 您错误地认为这与管理员组拥有的日志文件有关。您的进程作为“TableauAdmin”运行,它是管理员组的成员。通常,UAC 会在禁用此组的情况下记录此用户拥有的日志(实际上仅对拒绝 ACE 启用)。它在 elevated 登录的访问令牌中启用。无论何时启用管理员组,系统都会根据策略将创建的文件的所有者设置为管理员组本身,而不是管理员用户。这允许所有管理员始终如一地访问由任何管理员创建的文件。

标签: batch-file task administrator taskscheduler


【解决方案1】:

看看这个链接 -> https://blogs.msdn.microsoft.com/dataaccesstechnologies/2012/12/19/error-microsoft-office-excel-cannot-access-the-file-while-accessing-microsoft-office-11-0-object-library-from-ssis/

对于 Windows 2008 Server x64:创建以下目录:

    C:\Windows\SysWOW64\config\systemprofile\Desktop

对于 Windows 2008 Server x86:创建以下目录:

    C:\Windows\System32\config\systemprofile\Desktop 

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2014-10-02
    • 1970-01-01
    • 2011-07-23
    • 2014-10-15
    • 2013-10-19
    • 1970-01-01
    • 2014-11-12
    • 2014-03-15
    相关资源
    最近更新 更多