通过网页关闭计算机
Shutdown computer via web page
我有一个基于网络的应用程序,它会在客户端计算机上的 chromium 网络浏览器中以信息亭模式(全屏)自动加载,由 Windows 提供支持 7. 我想在网页上放置一个关机按钮,这样用户就可以直接关闭计算机。
- 有没有可能实现这个?
- 最好的解决方案是什么
Windows & Linux?
-P.S-
我可以完全控制客户的计算机。 (安装其他软件或浏览器扩展)。这是一个触摸屏POS机。
您不能从WEB页面直接访问客户的电脑,这是不可能的。
您只能访问浏览器,但它非常有限。
您只能使用 window.close()
关闭 window 选项卡。在这里阅读更多相关信息 - https://developer.mozilla.org/en-US/docs/Web/API/Window/close
出于安全原因,如果不运行浏览器之外的东西,这是不可能的。
如果页面是从服务器提供的,而您想关闭该服务器,请继续阅读:
一个可行的解决方案是 运行 后台服务器,例如 node.js。
在您的 node.js 服务器上,您可以侦听您正在呼叫的特定 url,在此事件触发时,您可以向您的主机发送关闭命令。然而,这会带来一些安全问题,您需要阻止从外部对节点的调用(如果您希望其他人能够将其关闭,则不需要)。而且你的 node.js 服务器必须是 运行 root 权限,这也是有风险的。
看看https://github.com/typicode/stop-server也许你能找到对你有用的东西。
据我所知,你最好的选择是下载一个 .bat 文件,它会关闭你的计算机并执行它,但除了 IE,我不确定它是否能正常工作。
<script type="text/javascript" language="javascript">
function RunFile() {
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
}
</script>
按照这些思路,运行 您之前下载的 .bat 文件而不是记事本。请注意,这仅适用于 IE。
因为你已经控制了目标机器,所以这是完全可行的。一种方法是引入一个单独的组件来执行关闭。
创建一个监听标准输入的控制台应用程序(例如,使用 C#),当它收到正确的输入时关闭机器。从 C# 关闭机器并不完全是微不足道的,但是 Whosebug knows how it is done.
使用正确的清单注册此应用程序
使用 Message Passing.
从您的网页(例如,在 shutdownButton.click() 上)调用此扩展程序
单个步骤过于宽泛,无法在一个答案中完整详细说明,但如果它们给您带来任何麻烦,您可以随时提出新问题。
您可以尝试通过 API 调用触发批处理脚本来关闭设备。
string startupPath = System.Environment.CurrentDirectory;
string path = System.IO.Path.GetFullPath(@"..\..\");
string BatchFilePath = startupPath + LogoffTriggerBatchFile;
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/c " + BatchFilePath);
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
return new HttpResponseMessage(HttpStatusCode.OK);
我有一个基于网络的应用程序,它会在客户端计算机上的 chromium 网络浏览器中以信息亭模式(全屏)自动加载,由 Windows 提供支持 7. 我想在网页上放置一个关机按钮,这样用户就可以直接关闭计算机。
- 有没有可能实现这个?
- 最好的解决方案是什么 Windows & Linux?
-P.S-
我可以完全控制客户的计算机。 (安装其他软件或浏览器扩展)。这是一个触摸屏POS机。
您不能从WEB页面直接访问客户的电脑,这是不可能的。 您只能访问浏览器,但它非常有限。
您只能使用 window.close()
关闭 window 选项卡。在这里阅读更多相关信息 - https://developer.mozilla.org/en-US/docs/Web/API/Window/close
出于安全原因,如果不运行浏览器之外的东西,这是不可能的。
如果页面是从服务器提供的,而您想关闭该服务器,请继续阅读:
一个可行的解决方案是 运行 后台服务器,例如 node.js。
在您的 node.js 服务器上,您可以侦听您正在呼叫的特定 url,在此事件触发时,您可以向您的主机发送关闭命令。然而,这会带来一些安全问题,您需要阻止从外部对节点的调用(如果您希望其他人能够将其关闭,则不需要)。而且你的 node.js 服务器必须是 运行 root 权限,这也是有风险的。
看看https://github.com/typicode/stop-server也许你能找到对你有用的东西。
据我所知,你最好的选择是下载一个 .bat 文件,它会关闭你的计算机并执行它,但除了 IE,我不确定它是否能正常工作。
<script type="text/javascript" language="javascript">
function RunFile() {
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
}
</script>
按照这些思路,运行 您之前下载的 .bat 文件而不是记事本。请注意,这仅适用于 IE。
因为你已经控制了目标机器,所以这是完全可行的。一种方法是引入一个单独的组件来执行关闭。
创建一个监听标准输入的控制台应用程序(例如,使用 C#),当它收到正确的输入时关闭机器。从 C# 关闭机器并不完全是微不足道的,但是 Whosebug knows how it is done.
- 使用正确的清单注册此应用程序
使用 Message Passing.
从您的网页(例如,在 shutdownButton.click() 上)调用此扩展程序
单个步骤过于宽泛,无法在一个答案中完整详细说明,但如果它们给您带来任何麻烦,您可以随时提出新问题。
您可以尝试通过 API 调用触发批处理脚本来关闭设备。
string startupPath = System.Environment.CurrentDirectory;
string path = System.IO.Path.GetFullPath(@"..\..\");
string BatchFilePath = startupPath + LogoffTriggerBatchFile;
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/c " + BatchFilePath);
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
return new HttpResponseMessage(HttpStatusCode.OK);