0

我正在制作一个 Windows 窗体程序,我可以在其中连接到 FTP 服务器以下载数据以将其显示给用户。我必须以用户也可以通过网关连接的方式制作应用程序。我做了下一个功能来通过网关登录:

private Boolean addRoute(string ip, string gw)
{
    string arg = String.Format("ADD {0} MASK 255.255.255.255 {1}", ip, gw);
    return startProcess("route.exe", arg, 10000, true);
}

private Boolean startProcess(String fileName, String arguments, int timeout, bool admin)
{
    try
    {
        Process process = new Process();

        process.StartInfo.FileName = fileName;
        if (System.Environment.OSVersion.Version.Major >= 6)
        {
            //if (admin) { process.StartInfo.UserName = "admin"; }
            //process.StartInfo.UserName = "admin";
        }
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.Arguments = arguments;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();

        if (timeout > 0)
        {
           if (process.WaitForExit(timeout))
           {
                return true;
           }
           else
           {
               return false;
           }
        }
        else
        {
           process.WaitForExit();
           return true;
        }
    }
    catch (Exception e)
    {
        Global.LogMessageToFile(e.Message);
        return false;
    }
}

这段代码在我的电脑上完美运行,但是当我在其他装有 Windows 7 的电脑上测试它时,它不再工作了。

我认为 UAC 权限有问题,所以我做了适合链接的第二个答案的解决方案Selectively disabling UAC for specific programs on Windows Programatically,但这似乎不是问题。

您对如何使用我的程序代码完成此任务有任何其他想法吗?

编辑 我被阻止发表评论,所以我会回答我没有例外,我需要的是通过网关连接到较低级别,从一个网络到另一个网络。这就是我采用这种解决方案的原因。

4

0 回答 0