Beispiel #1
0
        public void Test_PrefixDosDevice_1()
        {
            var src  = @"\\.\";
            var scan = new FilepathScanner(src);

            Assert.IsTrue(DosDevice.TryParse(scan, out var prefix));
        }
Beispiel #2
0
        public void Test_PrefixDosDevice_Normal2()
        {
            var src  = @"\\.\Volume{xxx-xxx-xxx}\dir\file.txt";
            var scan = new FilepathScanner(src);

            Assert.IsTrue(DosDevice.TryParse(scan, out var prefix));
            Assert.AreEqual(@"Volume{xxx-xxx-xxx}", prefix !.Volume);
        }
Beispiel #3
0
        public void Test_PrefixDosDevice_Normal1()
        {
            var src  = @"\\.\C:\dir\file.txt";
            var scan = new FilepathScanner(src);

            Assert.IsTrue(DosDevice.TryParse(scan, out var prefix));
            Assert.IsFalse(prefix !.IsUnc);
            Assert.AreEqual(@"C:", prefix !.Volume);
        }
Beispiel #4
0
        public void Test_PrefixDosDevice_UNC3()
        {
            var src  = @"\\?\UNC\127.0.0.1\share-name";
            var scan = new FilepathScanner(src);

            Assert.IsTrue(DosDevice.TryParse(scan, out var prefix));
            Assert.IsTrue(prefix !.IsUnc);
            Assert.AreEqual(@"127.0.0.1", prefix !.Server);
            Assert.AreEqual(@"share-name", prefix !.Share);
            Assert.AreEqual(@"127.0.0.1\share-name", prefix !.Volume);
        }
Beispiel #5
0
        public void Test_PrefixDosDevice_UNC2()
        {
            var src  = @"\\.\UNC\127.0.0.1";
            var scan = new FilepathScanner(src);

            Assert.IsTrue(DosDevice.TryParse(scan, out var prefix));
            Assert.IsTrue(prefix !.IsUnc);
            Assert.AreEqual(@"127.0.0.1", prefix !.Server);
            Assert.IsTrue(string.IsNullOrEmpty(prefix !.Share));
            Assert.AreEqual(@"127.0.0.1", prefix !.Volume);
        }
        private MountedDevicesInfo GetMountedDevices()
        {
            var mountedList = new MountedDevicesInfo();

            const string keyname = @"MountedDevices";

            var key = _hive.GetKey(keyname);

            foreach (var v in key.Values)
            {
                // //"USBSTOR#Disk&Ven_SMI&Prod_USB_DISK&Rev_1100#AA04012700011123&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"
                if (v.ValueName.Contains("Volume"))
                {
                    //Name: "\\??\\Volume{5c7fcd3b-2303-11e3-be7f-24fd52566ede}"
                    var rawBytes = v.ValueDataRaw;

                    var vol     = new Volume();
                    var subname = v.ValueName.Substring(11);
                    vol.GUID = subname.Substring(0, subname.Length - 1);

                    if (rawBytes[0] == 0x5f)
                    {
                        var someval = Encoding.Unicode.GetString(rawBytes, 8, rawBytes.Length - 8);

                        var segs = someval.Split('&');

                        vol.ValueGUID = segs[4].Split('{')[1].Replace("}", "");
                        var segs2 = segs[3].Split('#');
                        vol.Revision     = segs2[0].Substring(4);
                        vol.SerialNumber = segs2[1];
                        vol.Vendor       = segs[1].Substring(4);

                        mountedList.Volumes.Add(vol);
                    }
                }
                else if (v.ValueName.Contains("DosDevice"))
                {
                    var rawBytes = v.ValueDataRaw;


                    var dev = new DosDevice();
                    //\DosDevices\C:
                    dev.DriveLetter = v.ValueName.Substring(12);

                    if (rawBytes[0] == 0x5f)
                    {
                        var someval = Encoding.Unicode.GetString(rawBytes, 8, rawBytes.Length - 8);

                        var segs = someval.Split('&');

                        dev.GUID = segs[4].Split('{')[1].Replace("}", "");
                        var segs2 = segs[3].Split('#');
                        dev.Revision     = segs2[0].Substring(4);
                        dev.SerialNumber = segs2[1];
                        dev.Vendor       = segs[1].Substring(4);

                        mountedList.DosDevices.Add(dev);
                    }
                }
            }

            return(mountedList);
        }