1

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

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

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

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

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

有任何想法吗?

4

4 回答 4

2

我最谦虚的道歉。我使用的用户不是“性能监视器用户”组的成员。

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

我已将用户添加到该组,一切都很好。

于 2008-10-01T08:26:25.477 回答
1

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

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

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

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

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

干杯
凯夫

于 2008-09-30T10:49:43.847 回答
0

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

破解打开你的注册表,看看这个键是否存在:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance] "Disable Performance Counters"=dword:00000001

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

于 2008-09-30T10:04:20.307 回答
-1

取自MSDN

权限 LinkDemand - 对直接调用者的完全信任。该成员不能由部分信任的代码使用。

于 2008-09-30T09:36:50.357 回答