【问题标题】:Visual Basic: restarting Desktop Windows Manager (DWM)Visual Basic:重新启动桌面 Windows 管理器 (DWM)
【发布时间】:2014-01-16 17:46:41
【问题描述】:

如何重新启动桌面 Windows 管理器? 我已经试过了:

For Each Proc As Process In Process.GetProcessesByName("DWM")
Proc.Kill()
Next

但它给了我一个错误: System.dll 中出现“System.ComponentModel.Win32Exception”类型的未处理异常

附加信息:无权访问

如果我在记事本上使用它:

For Each Proc As Process In Process.GetProcessesByName("NOTEPAD")
Proc.Kill()
Next

效果很好 有人知道怎么做吗?

【问题讨论】:

  • 正如错误所说的“无法访问”可能是由于您在系统上的权限。此进程可能归 SYSTEM 所有,并且正在阻止您的 Kill() 请求。你是机器的管理员吗?如果您查看 TaskMgr,DWM 进程旁边的 User Name 字段是什么意思?
  • 在管理员模式下运行有帮助
  • 好的,我将把这个作为答案发布。随意标记它以表明问题已得到回答。

标签: .net vb.net windows


【解决方案1】:

除了 Evan L 所写的关于权限的内容之外,您还应该使用 System.ServiceProcess.ServiceController 类来优雅地重新启动,而不是直接杀死它。

例如添加对System.ServiceProcess的引用后,下面的代码会重启DWM(服务名UXSMS):

    Using dwmService As New System.ServiceProcess.ServiceController("UxSMS")
        dwmService.Stop()
        dwmService.WaitForStatus(ServiceProcess.ServiceControllerStatus.Stopped)
        dwmService.Start()
        dwmService.WaitForStatus(ServiceProcess.ServiceControllerStatus.Running)
    End Using

显然这是省略了任何错误检查等。

例如。如果服务没有运行会怎样?

PS。出于兴趣,您为什么要搞乱系统服务?大多数与 DWM 相关的东西都有actual API,在 Windows 8 上,无论如何你都不能真正禁用桌面组合......

【讨论】:

  • 如果您使用我拥有的代码(或任务管理器)停止 dwm,那么您的屏幕会暂时变黑(0.5 - 4 秒?)并且 dwm 会自动启动。
  • 我不明白你想说什么。您是否/试图/使屏幕在短时间内变黑?当我在我的机器上运行它时,我也会得到一个短暂的空白屏幕。
【解决方案2】:

您的错误状态 No Access 是因为您使用的帐户或权限级别不允许您在该进程上调用 Kill()

您需要以提升的权限运行,或确保您的帐户是您尝试运行消息的计算机上的管理员。

正如它在任务管理器中显示的那样 - DWM 归 SYSTEM 所有,因此只有 SYSTEM 或管理员可以终止该进程。

编辑:

如果您想提升程序本身的权限,请进入您的app.manifest 并更改此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

收件人:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

【讨论】:

  • 作为管理员,您仍然需要右键单击该程序,然后单击“以管理员模式打开”。这可以自动完成,它会自动询问“您是否允许该程序可以在您的计算机上进行更改”?
  • 我编辑了它,并为您的评论提供了解决方案。如果你没有 app.manifest,只需在项目中添加一个,方法是右键单击项目 -> 添加新项目 -> 应用程序清单文件。我发布的代码是针对 C# 的,但在 Vb.net 中应该是类似的
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
相关资源
最近更新 更多