【问题标题】:GetProcessesByName() and Windows Server 2003 scheduled taskGetProcessesByName() 和 Windows Server 2003 计划任务
【发布时间】:2010-09-14 05:15:27
【问题描述】:

是否有人知道以下代码需要哪些用户权限才能在 Windows Server 2003 上作为计划任务成功执行:

System.Diagnostics.Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)

当未按计划任务运行时,即在登录用户下,只要用户是“性能监视器用户”的成员,此代码就不会抛出异常。

在同一用户帐户下作为计划任务运行时,它会失败。

我可以让它工作的唯一方法是作为本地管理员组的成员运行它。

有什么想法吗?

【问题讨论】:

  • 你可以重新阅读我的后续,评论框有点大。

标签: windows permissions scheduled-tasks .net-1.1


【解决方案1】:

取自MSDN

权限 LinkDemand - 完整 对直接来电者的信任。这 成员不能被部分使用 受信任的代码。

【讨论】:

    【解决方案2】:

    我在读取进程名称时看到的一个问题是对性能计数器的访问可能会被禁用。

    破解打开你的注册表,看看这个键是否存在: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance] "禁用性能计数器"=dword:00000001

    您可以将其设置为零或将其删除。

    【讨论】:

      【解决方案3】:

      您为作为计划任务运行的帐户分配了哪些用户权限?您需要在本地安全设置中为相关帐户提供“作为批处理作业登录”。

      更新:您的应用是否写入任何文件?如果是,计划任务用户是否有足够的权限?

      我刚刚打开了一个测试应用程序,该应用程序将 Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName) 返回的 Process[] 数组中的进程名称写入文件,它作为计划任务工作得很好......甚至以仅是用户组成员的用户身份运行(甚至不是“性能监视器用户”的成员。

      它写入的文件夹分配给SYSTEM、管理员和计划任务用户的修改权限。

      是否有机会粘贴您的代码或至少一个足够小的 sn-p 来证明 exe 作为计划任务失败,以便我们帮助诊断问题?

      干杯
      凯夫

      【讨论】:

      • 这已自动完成:在 Windows 2000 Server、Windows 2000 Professional、Windows XP Professional 和 Windows Server 2003 家族中,任务计划程序会根据需要自动授予此权限。
      【解决方案4】:

      我最谦虚的道歉。我使用的用户不是“Performance Monitor Users”组的成员。

      这是 System.Diagnostics 的 .NET Framework 1.1 实现所必需的。

      我已将该用户添加到此组,一切正常。

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        相关资源
        最近更新 更多