我正在制作一个 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,但这似乎不是问题。
您对如何使用我的程序代码完成此任务有任何其他想法吗?
编辑 我被阻止发表评论,所以我会回答我没有例外,我需要的是通过网关连接到较低级别,从一个网络到另一个网络。这就是我采用这种解决方案的原因。