一、电脑相关设置
1、Win + R =》输入 gpedit.msc
2、远程控制开关机组策略里设置:
计算机配置 =》Windows设置 =》安全设置 =》本地策略 =》用户权限分配 和 安全选项
=>从网络访问此计算机 和 从远程系统强制关机 里面添加 Guest账户
3、检查来宾和管理员禁用状态,管理员禁用,如果下方默认来宾是guest,那么来宾用户状态要启用
3、电脑Bios系统里面需要设置 网卡唤醒“Lan on Wake”还有一个什么要设置成“Fixed Time”
4、确认防火墙关闭
5、关闭快速启动,快速启动”作为系统默认的关机方式,不支持网络唤醒
6、组策略管理员状态“不适用”解决方案
控制面板 -》管理工具 -》计算机管理 -》计算机管理(本地) -》系统工具 -》本地用户和组 -》用户 -》右边双击“Guest” -》取消“帐户已停用”勾选—确定(此时“Guest”帐户无红叉)
二、主要代码
/// <summary>
/// 开机
/// </summary>
/// <param name="ip"></param>
/// <param name="macString">物理地址 “FF-FF-FF-FF-FF-FF”格式</param>
private void WakeUp(string macString)//发送
{
try
{
if (null != macString && macString.Split('-').Length == 6)
{
string[] macStringArray = macString.Split('-');
byte[] macByteArray = new byte[6];
for (int i = 0; i < 6; i++)
{
macByteArray[i] = Convert.ToByte(macStringArray[i], 16);
}
UdpClient client = new UdpClient();
client.Connect(IPAddress.Broadcast, 9090);
byte[] packet = new byte[17 * 6];
//写入6字节FF
for (int i = 0; i < 6; i++)
packet[i] = 0xFF;
//写入16遍mac地址
for (int i = 1; i <= 16; i++)
for (int j = 0; j < 6; j++)
packet[i * 6 + j] = macByteArray[j];
int result = client.Send(packet, packet.Length);
client.Close();
}
}
catch (Exception ex)
{
Debug.Log("网络唤起指定计算机异常"+ex.ToString());
}
}
//通过IP关闭计算机
//关机命令: shutdown -s -m \\192.168.0.xx -t 0
//重启命令: shutdown -r -m \\192.168.0.xx -t 0
private void ShutDown(string ip)
{
string args = String.Format("/cshutdown -s -m \\\\{0} -t 0", ip);
System.Diagnostics.Process.Start("cmd.exe", args);
Debug.Log(args);
}