在ASP.net页面中实现对远程终端的控制 我想通过在asp.net页面中实现对远程终端机的控制,例如重启终端,关闭终端等等。不知如何实现,请教高人指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ASP.NET没这个权限吧?试试这个:点击Button1,强制重启C#重启服务器代码using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.Runtime.InteropServices; namespace WebApplication1_advapi{ /**//// /// WebForm1 的摘要说明。 /// public class WebForm1 : System.Web.UI.Page { protected const int SE_PRIVILEGE_ENABLED = 0x2; protected const int TOKEN_QUERY = 0x8; protected const int TOKEN_ADJUST_PRIVILEGES = 0x20; protected const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; protected const int EWX_LOGOFF = 0x0; protected const int EWX_SHUTDOWN = 0x1; protected const int EWX_REBOOT = 0x2; protected const int EWX_FORCE = 0x4; protected const int EWX_POWEROFF = 0x8; protected System.Web.UI.WebControls.Button Button1; protected const int EWX_FORCEIFHUNG = 0x10; [StructLayout(LayoutKind.Sequential, Pack=1)] protected struct LuidStruct { public int Count; public long Luid; public int Attr; } [DllImport("kernel32.dll", ExactSpelling=true)] protected static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", SetLastError=true)] protected static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError=true)] protected static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=true)] protected static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref LuidStruct newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32.dll", SetLastError=true, ExactSpelling=true)] protected static extern bool ExitWindowsEx(int flg, int rea); protected static void DoExitWindows(int flg) { LuidStruct tp; IntPtr hproc = GetCurrentProcess(); IntPtr htok = IntPtr.Zero; OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); tp.Count = 1; tp.Luid = 0; tp.Attr = SE_PRIVILEGE_ENABLED; LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid); AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); ExitWindowsEx(flg, 0); } public static void Shutdown() { DoExitWindows(EWX_SHUTDOWN); } public static void Reboot() { DoExitWindows(EWX_REBOOT | EWX_FORCE); } public static void Logoff() { DoExitWindows(EWX_LOGOFF); } [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=false)] protected static extern bool InitiateSystemShutdown(string name, string msg, int timeout, bool force, bool reboot); private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /**//// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button1_Click(object sender, System.EventArgs e) { InitiateSystemShutdown(null,null,0,true,true); } }} asp.net把命令存到数据库中,在服务端写个server读取命令控制终端。或者用activex 使用什么控件可以临时批量存储页面数据? webservices想将二维数组作为传递参数该怎么办? 文件下载如何做? 请问:怎样将存放在App_Code文件夹中的公共类文件abc.cs转换为abc.dll? 数字格式设置问题 ASP.NET中如何获得页面上的所有控件对象 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 求问c#连接sql server2000的完整代码 如何在客户端JAVASCRIP读取viewstate中的内容 下岗了,散分ing 如何保存 DropDownLis的DataValueField的值? 着急::上传文件特殊问题
点击Button1,强制重启C#重启服务器代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
namespace WebApplication1_advapi
{
/**////
/// WebForm1 的摘要说明。
///
public class WebForm1 : System.Web.UI.Page
{
protected const int SE_PRIVILEGE_ENABLED = 0x2;
protected const int TOKEN_QUERY = 0x8;
protected const int TOKEN_ADJUST_PRIVILEGES = 0x20;
protected const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
protected const int EWX_LOGOFF = 0x0;
protected const int EWX_SHUTDOWN = 0x1;
protected const int EWX_REBOOT = 0x2;
protected const int EWX_FORCE = 0x4;
protected const int EWX_POWEROFF = 0x8;
protected System.Web.UI.WebControls.Button Button1;
protected const int EWX_FORCEIFHUNG = 0x10;
[StructLayout(LayoutKind.Sequential, Pack=1)]
protected struct LuidStruct
{
public int Count;
public long Luid;
public int Attr;
} [DllImport("kernel32.dll", ExactSpelling=true)]
protected static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", SetLastError=true)]
protected static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError=true)]
protected static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=true)]
protected static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref LuidStruct newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32.dll", SetLastError=true, ExactSpelling=true)]
protected static extern bool ExitWindowsEx(int flg, int rea); protected static void DoExitWindows(int flg)
{
LuidStruct tp;
IntPtr hproc = GetCurrentProcess();
IntPtr htok = IntPtr.Zero; OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
tp.Count = 1;
tp.Luid = 0;
tp.Attr = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
ExitWindowsEx(flg, 0);
} public static void Shutdown()
{
DoExitWindows(EWX_SHUTDOWN);
} public static void Reboot()
{
DoExitWindows(EWX_REBOOT | EWX_FORCE);
} public static void Logoff()
{
DoExitWindows(EWX_LOGOFF);
} [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=false)]
protected static extern bool InitiateSystemShutdown(string name, string msg, int timeout, bool force, bool reboot);
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面 } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**////
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
InitiateSystemShutdown(null,null,0,true,true);
}
}
}