C# 关闭或重新启动本地计算机打开按钮
我在谷歌上搜索了一段时间,似乎总是回到同样的解决方案,但似乎不起作用C# 关闭或重新启动本地计算机打开按钮,c#,C#,我在谷歌上搜索了一段时间,似乎总是回到同样的解决方案,但似乎不起作用 private void btnRestart_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("Shutdown.exe", "/r /f /t 00"); } private void btnShutdown_Click(object sender, EventArgs e) { System.Diagnostics
private void btnRestart_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("Shutdown.exe", "/r /f /t 00");
}
private void btnShutdown_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("Shutdown.exe", "/s /f /t 00");
}
CMD出现一小秒,然后关闭,不做任何操作。我错过什么了吗 将这些名称空间添加到代码中
using System.Diagnostics;
using System.Runtime.InteropServices;
甚至这也取决于你被赋予了什么特权。
我希望这将对您有所帮助。根据
shutdown/?
,您使用的不是斜杠(/),而是破折号(-)
或者,尝试使用params运行
cmd.exe
/c shutdown.exe/r/f/t 00尝试使用
这个答案是我从中得到的。它对我有用。请确保添加对System.Management
using System.Management;
void Shutdown()
{
ManagementBaseObject mboShutdown = null;
ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
mcWin32.Get();
// You can't shutdown without security privileges
mcWin32.Scope.Options.EnablePrivileges = true;
ManagementBaseObject mboShutdownParams =
mcWin32.GetMethodParameters("Win32Shutdown");
// Flag 1 means we want to shut down the system. Use "2" to reboot.
mboShutdownParams["Flags"] = "1";
mboShutdownParams["Reserved"] = "0";
foreach (ManagementObject manObj in mcWin32.GetInstances())
{
mboShutdown = manObj.InvokeMethod("Win32Shutdown",
mboShutdownParams, null);
}
}
这有点干净
使用System.Runtime.InteropServices;
[DllImport(“user32.dll”,SetLastError=true)]
静态外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部-外部;
性别(1,0)//这将导致系统关闭。
性别(2,0)//这将导致系统重新启动。
这取决于应用程序拥有的权限…我不确定,但是Shutdown.exe
可能需要Shutdown.exe
。或者,这只适用于Linux。只是一个想法。目前它正在域管理员帐户下进行测试。您已经在cmd.exe中尝试了该命令,并且它可以工作?您是否尝试在参数前加上“cmd/k”,即“cmd/k shutdown.exe…”?这至少应该使命令窗口保持打开状态,以便您可以查看shutdown.exe是否显示错误消息。@FrK引用该链接
using System.Management;
void Shutdown()
{
ManagementBaseObject mboShutdown = null;
ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
mcWin32.Get();
// You can't shutdown without security privileges
mcWin32.Scope.Options.EnablePrivileges = true;
ManagementBaseObject mboShutdownParams =
mcWin32.GetMethodParameters("Win32Shutdown");
// Flag 1 means we want to shut down the system. Use "2" to reboot.
mboShutdownParams["Flags"] = "1";
mboShutdownParams["Reserved"] = "0";
foreach (ManagementObject manObj in mcWin32.GetInstances())
{
mboShutdown = manObj.InvokeMethod("Win32Shutdown",
mboShutdownParams, null);
}
}