【问题标题】:Execute a system command from C#从 C# 执行系统命令
【发布时间】:2013-07-17 11:29:19
【问题描述】:

我的程序必须在 Windows 的登录屏幕后立即执行。为此,我更改了一些注册表值,现在这个程序在启动时启动,而不是 Explorer.exe ()。在我的程序中,用户输入他们的用户名和密码,然后登录到系统。登录后,我想运行 explorer.exe、任务栏和开始菜单以对用户可见。我使用这段代码来执行系统命令:

string cmd = "/C explorer.exe ";
System.Diagnostics.Process.Start("CMD.exe", cmd);

但是执行这个命令后,只出现My Computer窗口。任务栏和开始菜单不出现。执行explorer.exe 命令后如何查看任务栏和开始菜单(我使用的是 Windows 7)?

【问题讨论】:

  • 我更改了一些注册表值请展开以便我们了解您所做的事情
  • 另外,您也可以使用System.Diagnostics.Process.Start("explorer.exe")。无需使用 CMD 启动资源管理器...
  • 呃,这对我来说听起来很危险。登录后,在任何 Windows 进程实际启动之前,您需要做什么?
  • 我怀疑你已经把你的程序变成了shell。你可以这样做,但你需要正视自己的责任,真正成为一个空壳。您以后不能改变主意,并期望资源管理器来拯救您。
  • 如果您仍然希望正常的外壳存在,为什么要替换桌面外壳?创建一个新的桌面外壳比创建一个 Windows 应用程序要多得多。如果你不知道怎么做,或者不想做所有这些工作,你不应该做一个外壳。相反,您应该创建一个服务并对用户登录做出反应。

标签: c# windows


【解决方案1】:

进行自定义登录的正确(也是唯一!)方法是通过凭据提供程序(Vista 后)或使用 Gina(Vista 前)。阅读Create Custom Login Experiences With Credential Providers For Windows Vista 了解如何操作。

现在,您正在为 Raymond Chen 的未来专栏提供关于行为不端的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2011-03-12
    • 2011-03-29
    相关资源
    最近更新 更多