Uygulamamın bir ağ sürücüsünden çalışıp çalışmadığını programlı olarak öğrenmek istiyorum. Bunu yapmanın en basit yolu nedir? Hem UNC yollarını (\\127.0.0.1\d$
) hem de eşlenen ağ sürücülerini (Z :) desteklemelidir.Bir uygulama bir ağ sürücüsünden çalışıyor olup olmadığını öğrenmek için C# kolay yolu?
cevap
Bu Bunu yapmanın benim şimdiki yöntemdir, ancak daha iyi bir yolu olmalı gibi geliyor için DriveInfo sınıfını test edin. ,
private bool IsRunningFromNetworkDrive()
{
var dir = AppDomain.CurrentDomain.BaseDirectory;
var driveLetter = dir.First();
if (!Char.IsLetter(driveLetter))
return true;
if (new DriveInfo(driveLetter.ToString()).DriveType == DriveType.Network)
return true;
return false;
}
Bu, eşlenmiş sürücü kasası içindir. A sürücüsünün bir ağ sürücüsü olup olmadığını öğrenmek için DriveInfo
sınıfını kullanabilirsiniz.
DriveInfo info = new DriveInfo("Z");
if (info.DriveType == DriveType.Network)
{
// Running from network
}
Komple yöntem ve Örnek Kod. UNC yolu kullanarak durumda
public static bool IsRunningFromNetwork(string rootPath)
{
try
{
System.IO.DriveInfo info = new DriveInfo(rootPath);
if (info.DriveType == DriveType.Network)
{
return true;
}
return false;
}
catch
{
try
{
Uri uri = new Uri(rootPath);
return uri.IsUnc;
}
catch
{
return false;
}
}
}
static void Main(string[] args)
{
Console.WriteLine(IsRunningFromNetwork(System.IO.Path.GetPathRoot(AppDomain.CurrentDomain.BaseDirectory))); }
o quitely basittir - bu localhost (127.0.0.1, iş istasyonunun :: 1, ana makine adı hostname.domain.local, ip-adresleri olduğunu konak UNC adı ve testi incelemek) ya da değil.
yolu UNC değilse - yolundan sürücü harfini ayıklamak ve türünün
if (new DriveInfo(Application.StartupPath).DriveType == DriveType.Network)
{
// here
}
DriveInfo m = DriveInfo.GetDrives().Where(p => p.DriveType == DriveType.Network).FirstOrDefault();
if (m != null)
{
//do stuff
}
else
{
//do stuff
}
Ben geçerli bir yol geçirildiğinde bunun istisnaları önler, çünkü daha iyi bence olduğunu dotnetstep çözümünü, yeniden düzenlenmiş ve geçirilen bir yanlış yolu varsa bir istisna atar Doğru veya yanlış varsayımına izin vermez.
//----------------------------------------------------------------------------------------------------
/// <summary>Gets a boolean indicating whether the specified path is a local path or a network path.</summary>
/// <param name="path">Path to check</param>
/// <returns>Returns a boolean indicating whether the specified path is a local path or a network path.</returns>
public static Boolean IsNetworkPath(String path) {
Uri uri = new Uri(path);
if (uri.IsUnc) {
return true;
}
DriveInfo info = new DriveInfo(path);
if (info.DriveType == DriveType.Network) {
return true;
}
return false;
}
Testi:
//----------------------------------------------------------------------------------------------------
/// <summary>A test for IsNetworkPath</summary>
[TestMethod()]
public void IsNetworkPathTest() {
String s1 = @"\\Test"; // unc
String s2 = @"C:\Program Files"; // local
String s3 = @"S:\"; // mapped
String s4 = "ljöasdf"; // invalid
Assert.IsTrue(RPath.IsNetworkPath(s1));
Assert.IsFalse(RPath.IsNetworkPath(s2));
Assert.IsTrue(RPath.IsNetworkPath(s3));
try {
RPath.IsNetworkPath(s4);
Assert.Fail();
}
catch {}
}
- 1. Bir istemcinin canlı olup olmadığını öğrenmek için
- 2. Bir div değerinin kaydırma çubuğuna sahip olup olmadığını öğrenmek için
- 3. Dize bir URL olup olmadığını belirlemek için Objective-C
- 4. GVim: guifont'un mevcut olup olmadığını öğrenmek
- 5. Google App Engine - Bir kullanıcı yönetici olup olmadığını öğrenmek
- 6. Bir yakut komut dosyasının çalışıyor olup olmadığını belirleme
- 7. Kullanıcının mobil cihazda olup olmadığını belirlemenin en kolay yolu
- 8. Bir sürücü harfinin paylaşılan/ağ sürücüsü olup olmadığını kontrol edin
- 9. Bir sınıf/yapının veri üyesi olup olmadığını anlamanın kolay bir yolu var mı?
- 10. Bir sınıf java6 için derlenmiş olup olmadığını anlamanın bir yolu var mı?
- 11. CSS - Ben css yoluyla eklemek için herhangi bir "kolay" yolu olup olmadığını merak tüm div
- 12. Tüm uygulama için CurrentCulture'ı ayarlamanın kolay yolu?
- 13. Kullanılmayan değişkenlerim olup olmadığını öğrenmek için scalac'ı nasıl alabilirim?
- 14. Ağ konum sağlayıcısı etkin olup olmadığını kontrol etmek için herhangi bir alternatif yolu?
- 15. Meteor, {{currentUser}} olup olmadığını öğrenmek için zaman alır
- 16. Belirli bir grafiğin başka bir grafiğin alt çizgisi olup olmadığını belirlemenin kolay yolu?
- 17. (C, Linux) Ağ arabiriminin kablosuz veya kablolu olup olmadığını bilmek
- 18. Bir sınıf başvurulan olup olmadığını belirleme C#
- 19. Bir dizenin boş olup olmadığını kontrol etmek için Ruby yolu?
- 20. Tablonun var olup olmadığını kontrol edin C#
- 21. C# bir dizedeki tüm karakterlerin aynı olup olmadığını belirleyin
- 22. Uygulamamın derecelendirilmiş olup olmadığını öğrenmek için programlı bir yol var mı?
- 23. Mongodb indekslerinin hala kullanılmakta olup olmadığını anlamanın kolay bir yolu var mı?
- 24. (Windows Phone 7) aygıtının Internet bağlantısına sahip olup olmadığını saptamanın daha kolay bir yolu var mı?
- 25. Birkaç DateTime dizisinde herhangi bir eşleşme olup olmadığını görmenin en kolay yolu nedir?
- 26. Bir çevresel değişkenin var olup olmadığını kontrol etmek için iyi bir uygulama nedir?
- 27. Lodash dönüş dizisi yolu geçerli olup olmadığını
- 28. Bir tarih/saatin mevcut olup olmadığını belirleme yolu var mı?
- 29. Kontrol kilit bir Python listede olup olmadığını
- 30. InstanceDir'in tam veya göreli bir yolu olup olmadığını ne belirler?