【问题标题】:0x80070005 (E_ACCESSDENIED) In an ASP.NET application while trying to use Windows Task Scheduler0x80070005 (E_ACCESSDENIED) 在 ASP.NET 应用程序中尝试使用 Windows 任务计划程序
【发布时间】:2011-02-05 15:53:10
【问题描述】:

我目前正在使用 VB.NET 开发一个 ASP.NET 应用程序,它的功能之一是使用 Windows 任务计划程序。应用程序需要对此进行完全控制,因为它需要创建、修改、删除和运行任务。

我找到了this library 来帮助解决整个问题,它运行良好,但仅在我的 Windows XP 机器上本地运行。一旦我将应用程序部署到 Windows Server 2003 上的 IIS6 并访问使用我的 Scheduler 对象的页面,我就会收到以下错误。

访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

我在网上寻找了各种解决方案,包括使用无效的 CACLS 授予特定用户(甚至所有人)对 %windir%\Tasks 的权限,以及使用模拟并将 IUSER 添加到备份操作用户组这不起作用,因为应用程序必须使用 Windows 集成身份验证。

让我对整个情况感到困惑的一件事是,我在测试应用程序时登录的用户可以非常愉快地远程桌面并登录到服务器并使用任务计划程序。此外,如果我在 Visual Studio 中本地运行应用程序(仍然在同一用户下)并将应用程序指向服务器的任务计划程序,它工作正常。除此之外,如果我从服务器运行应用程序并将其指向我的本地任务计划程序,我会得到相同的“访问被拒绝”错误。所有这一切让我认为这不是任务计划程序权限,而是与任务计划程序库尝试使用的某些组件的权限有关。

有谁知道我可以做些什么来解决这个问题,甚至只是一个正确方向的指针,因为这已经让我发疯了一天多。在 IIS 问题、模拟和 Windows Server 安全方面,我必须说我是一个新手。

非常感谢

【问题讨论】:

  • 您应该在尝试使用 exe\TS 时传递凭据信息。

标签: asp.net permissions windows-server-2003 scheduler access-denied


【解决方案1】:

嘿,我知道我可能迟到了,你可以做的是将任务设置为在 NT AUTHORITY\SYSTEM 下运行以使用此

(C#)

字符串 NULL = null ; task.SetAccountInformation("", NULL);

并为当前用户设置用户名

string username = "你的 xp 用户名";
要么 字符串用户名 = System.Security.Principal.WindowsIdentity.GetCurrent().Name ; 字符串 NULL = null ;

task.SetAccountInformation(用户名, NULL);

我希望这对你有用!!!!让我知道情况如何!!!

【讨论】:

  • 嘿,当解决方案移到它应该坐在的实际服务器上时,这个问题奇迹般地消失了。那个项目不久前就出来了,我不再为那家公司工作,所以恐怕我无法测试你的解决方案!以任何方式欢呼
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2015-12-25
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多