是否有人知道以下代码需要哪些用户权限才能在Windows Server 2003上成功执行作为计划任务:
System.Diagnostics.Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)
如果没有按计划任务运行,即在登录用户下运行,只要用户是“性能监视器用户”的成员,此代码就不会抛出异常。
在同一用户帐户下作为计划任务运行时,它会失败。
我能让它工作的唯一方法是将其作为本地管理员组的成员运行。
有什么想法吗?
答案 0 :(得分:2)
我最卑鄙的道歉。我使用的用户不是“性能监视器用户”组的成员。
这对于System.Diagnostics的.NET Framework 1.1实现是必需的。
我已将用户添加到此论坛,一切顺利。
答案 1 :(得分:1)
您为计划任务运行的帐户提供了哪些用户权限分配?您需要在本地安全设置中提供有问题的帐户“以批处理作业登录”。
更新:您的应用是否会写入任何文件,如果是,则计划任务用户是否拥有足够的权限?
我刚刚敲了一个测试应用程序,它将Process.GetProcessesByName(Process.GetCurrentProcess()。ProcessName)返回的Process []数组中的进程名称写入文件,它可以正常工作...甚至以只是Users组成员的用户身份运行(甚至不是'Performance Monitor Users'的成员。
它写入的文件夹被分配了对SYSTEM,Administrators和计划任务用户的修改权限。
是否有机会粘贴您的代码或至少一个足够小的片段,证明exe作为计划任务失败,以便我们可以帮助诊断问题?
干杯
千电子伏
答案 2 :(得分:0)
我在阅读流程名称时遇到的一个问题是,可能会禁用对性能计数器的访问。
破解您的注册表并查看此密钥是否存在: [HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ PerfProc \性能] “禁用性能计数器”= dword:00000001
您可以将其设置为零或删除它。
答案 3 :(得分:-1)
取自MSDN:
权限 LinkDemand - 已满 信任直接来电者。这个 成员不能部分使用 可信代码。