我目前已经实施了HttpListener
个网络服务器,它将当前日志作为HTML页面提供给richTextBox
。这样我就可以从网络上的任何地方检查应用程序的状态
此实现存在一些问题,它需要管理员权限才能运行netsh
命令以使其可连接。但是,ClickOnce
应用程序中确实没有管理员权限。我想继续使用ClickOnce
进行部署,那么还有另一种不需要管理员权限的替代方案吗?
这可以使用sockets
吗?
我希望尽可能简单,因为我不支持SET
或POST
等。
答案 0 :(得分:0)
嘿老兄只是将以下代码粘贴到您的应用程序中它将会做什么,如果您的应用程序没有管理员权限,那么它将强制应用程序在管理模式下重启,显然它会先询问!
public static bool IsAdmin()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal p = new WindowsPrincipal(id);
return p.IsInRole(WindowsBuiltInRole.Administrator);
}
public static void AqquireAdminMode()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
}
catch (System.ComponentModel.Win32Exception ex)
{
return;
}
System.Windows.Forms.Application.Exit();
}
并且应该在表单加载事件
中调用此代码if(!IsAdmin())
{
AqquireAdminMode();
}
随时问你是否还有问题!
答案 1 :(得分:0)
您正在使用HttpListener,我认为如果您可以上传代码,TcpListener可以替代它,那么可以说明TcpListener的工作