通过本地网络提供日志文件

时间:2014-02-01 18:44:46

标签: c# winforms logging webserver httplistener

我目前已经实施了HttpListener个网络服务器,它将当前日志作为HTML页面提供给richTextBox。这样我就可以从网络上的任何地方检查应用程序的状态 此实现存在一些问题,它需要管理员权限才能运行netsh命令以使其可连接。但是,ClickOnce应用程序中确实没有管理员权限。我想继续使用ClickOnce进行部署,那么还有另一种不需要管理员权限的替代方案吗? 这可以使用sockets吗? 我希望尽可能简单,因为我不支持SETPOST等。

2 个答案:

答案 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的工作