C# 检查网络是否连通 判断远程文件是否存在 C#获取程序路径的方法中需要注意的地方

C# 检查网络是否连通

 [DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
private bool IsConnected()
        {
int I = 0;
bool state = InternetGetConnectedState(out I, 0);
return state;
        }

调用方法:

bool state = IsConnected();   //True 为连通   False 为断开

判断远程文件是否存在

private bool RemoteFileExists(string fileUrl)
        {
try
            {
                HttpWebRequest re = (HttpWebRequest)WebRequest.Create(fileUrl);
                HttpWebResponse res = (HttpWebResponse)re.GetResponse();
if (res.ContentLength != 0)
                {
//MessageBox.Show("文件存在");
return true;
                }
            }
catch (Exception)
            {
//MessageBox.Show("无此文件");
return false;
            }
return false;
        }

C#获取程序路径的方法中需要注意的地方

C#获取程序路径的方法中需要注意的地方(版本1)

获取运行程序路径的方法主要有以下7种:

  • System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

    他获取的是Module的文件名,如果在VS2008的调试环境中,获取的是 [程序名].vshost.exe的完整文件名。

  • System.Environment.CurrentDirectory

    System.IO.Directory.GetCurrentDirectory()

    这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。

  • System.AppDomain.CurrentDomain.BaseDirectory

    System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

    这两个方法是可靠的获取程序路径的方法。返回的路径最末以"\"结尾。可以方便的在后面加入任何Path。当然就算没有也可以用Path.Combine来合并路径以获得想要的路径。

  • System.Windows.Forms.Application.StartupPath

    这个方法也是可靠的获取程序路径的方法。不过返回的路径最末并没有"\"结尾。另外因为是Forms命名空间的。因此如果使用WPF还是不用的好。

  • System.Windows.Forms.Application.ExecutablePath

    这个方法获取的是执行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以获得路径。

版本2:

//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。

string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。

string str = System.Environment.CurrentDirectory;

result: X:\xxx\xxx (.exe文件所在的目录)

//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。

string str = System.AppDomain.CurrentDomain.BaseDirectory;

result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

//获取和设置包含该应用程序的目录的名称。

string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

string str = System.Windows.Forms.Application.StartupPath;

result: X:\xxx\xxx (.exe文件所在的目录)

//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。

string str = System.Windows.Forms.Application.ExecutablePath;

result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

//获取应用程序的当前工作目录(不可靠)。

string str = System.IO.Directory.GetCurrentDirectory();

result: X:\xxx\xxx (.exe文件所在的目录)