c# - 我可以以编程方式启动 "services.msc"并将用户集中在确切的服务上吗?

标签 c# service process

我想以编程方式启动“services.msc”并按名称选择服务。我可以显示窗口,但在这种情况下没有选择服务:

var proc = new Process();
proc.StartInfo.FileName = "services.msc";
//proc.StartInfo.Arguments = "MyServiceName";
proc.Start();

我可以指定一个参数来选择服务吗?

最佳答案

我一直遇到这个问题(然后是一些),但我不相信如果不推出自定义解决方案就无法解决这个问题(相关:how to open a service properties dialog)。

我最终使用了 AutoIt ( https://www.autoitscript.com/site/autoit/downloads/ )。我首先使用 AutoIt Window Info 来获取控件的详细信息。然后我添加了对 AutoItX3.Assembly.dll 的引用并添加了以下代码:

AutoItX.Run(string.Format("{0} \"{1}\"", fileName, args), AppDomain.CurrentDomain.BaseDirectory);
AutoItX.WinWaitActive("Services");
int result = AutoItX.ControlFocus("Services", "Services (Local)", "[CLASS:MMCOCXViewWindow; INSTANCE:1]");

if (result == 1)
{
    AutoItX.ControlSend("Services", "Services (Local)", "[CLASS:SysHeader32; INSTANCE:1]", "{TAB}");
    AutoItX.Send("MyService");
}

因为我不想注册 dll(以便我可以分发文件),所以我将 AutoItX3.Assembly.dll、AutoItX3.Assembly.xml、AutoItX3.dll 和 AutoItX3_64.dll 添加到我的解决方案中。

它工作得很好。在我的例子中,我还想弹出属性,所以我在之后添加了一个额外的 {ENTER}。

关于c# - 我可以以编程方式启动 "services.msc"并将用户集中在确切的服务上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553931/

相关文章:

android如何检查服务是否正在运行

android - 手机锁定时服务停止运行

c# - 连接服务不在 VS2013 中?

process - Erlang OTP-observer 不显示我的应用程序

C# - 锁定文件直到浏览器关闭、用户离开页面或 session 过期

c# - OpenPop - 获取电子邮件详细信息 c#

C# 属性不可访问

c# - 对于 Int32 值太大或太小

java - 基于优先级的线程?

c# - 使用 IE 而不是默认浏览器打开 url