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