gpt4 book ai didi

c# - Process.StartTime 访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 14:21:12 25 4
gpt4 key购买 nike

我的代码需要确定特定进程运行了多长时间。但它继续失败,并在 Process.StartTime 请求上显示访问被拒绝的错误消息。这是一个使用用户凭据运行的进程(即,不是高权限进程)。显然有一个安全设置或一个策略设置,或者 一些东西 我需要摆弄来解决这个问题,因为我不敢相信框架中的 StartTime 属性只是为了它可以 100% 失败的时间。

Google 搜索表明我可以通过将运行查询代码的用户凭据添加到“性能日志用户”组来解决此问题。然而,这台机器上不存在这样的用户组。

最佳答案

Lars,我读过一些与您过去所说的类似的内容。不幸的是,我对有问题的机器能做的事情有些限制(换句话说,我不能随意创建用户组:它是一个服务器,而不仅仅是一些随机的 PC)。

感谢 Will 和 Lars 的回答。不幸的是,他们没有解决我的问题。

最终的解决方案是使用 WMI:

using System.Management;
String queryString = "select CreationDate from Win32_Process where ProcessId='" + ProcessId + "'";
SelectQuery query = new SelectQuery(queryString);

ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection processes = searcher.Get();

//... snip ... logic to figure out which of the processes in the collection is the right one goes here

DateTime startTime = ManagementDateTimeConverter.ToDateTime(processes[0]["CreationDate"].ToString());
TimeSpan uptime = DateTime.Now.Subtract(startTime);

部分内容摘自代码项目:

http://www.codeproject.com/KB/system/win32processusingwmi.aspx

还有“嘿,脚本专家!”:

http://www.microsoft.com/technet/scriptcenter/resources/qanda/jul05/hey0720.mspx

关于c# - Process.StartTime 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com