Check if path is on network
Asked Answered
P

2

9

In my app I have a dialog in which the user can select a database backup location.
I want to warn the user if the location he/she selected is "probably not secure".

I want to consider the following locations secure:

  1. When selected folder is on a network
    (either by a mapped drive (I:\Backup) or UNC notation(\\server2\backup))
  2. When selected folder is on a different physical disk than the database folder

How can I get this kind of info about a selected folder?
I know about the DriveInfo class, but it only handles drive letters, not UNC paths.

Pearson answered 11/2, 2010 at 9:51 Comment(1)
Hi Robbert! If one of the answers below provided a doable solution, could you please accept that one as the answer, just so this question no longer shows up as unanswered. Thank you!Anticipation
P
21

Take a look at the PathIsNetworkPath function:

class Program
{
    [DllImport("shlwapi.dll")]
    private static extern bool PathIsNetworkPath(string pszPath);

    static void Main(string[] args)
    {
        Console.WriteLine(PathIsNetworkPath("i:\Backup"));
    }
}
Parrnell answered 11/2, 2010 at 12:54 Comment(1)
Just a FYI: The function does not verify that the specified network resource exists, is currently accessible, or that the user has sufficient permissions to access it.Secluded
H
0

Have a look at the DirectoryInfo object. Open one on the selected path and you can check many things. Perhaps you might want to fetch the DirectorySecurity and check if the path is locked down.

A proactive programmer might create a new folder for his/her application backup and create a strong ACL themselves...

Hoboken answered 11/2, 2010 at 12:30 Comment(2)
I don't think that this is a good idea to add ACLs, because this adds more complexity and it's always better to keep it simple.Yellows
It's better to be secure by default. If they're avoiding unc posts and storing locally. Ensuring a good ACL exists on the storage location is another layer.Hoboken

© 2022 - 2024 — McMap. All rights reserved.