160 lines
5.7 KiB
C#
160 lines
5.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Management;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security.AccessControl;
|
|
using System.Security.Principal;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Mip
|
|
{
|
|
static class classDiskOperations
|
|
{
|
|
public static string TempPath = Application.StartupPath + @"\MipTemp";
|
|
|
|
public static void CreatePath()
|
|
{
|
|
if (Directory.Exists(TempPath)) //adresár už existuje
|
|
{
|
|
//RemovePathProtection(TempPath);
|
|
System.IO.DirectoryInfo adresar = new System.IO.DirectoryInfo(TempPath);
|
|
|
|
foreach (System.IO.FileInfo file in adresar.GetFiles()) file.Delete();
|
|
foreach (System.IO.DirectoryInfo subDirectory in adresar.GetDirectories()) subDirectory.Delete(true);
|
|
//AddPathProtection(TempPath);
|
|
}
|
|
|
|
// adresar neexistuje - vytvorenie
|
|
else
|
|
{
|
|
try
|
|
{
|
|
Directory.CreateDirectory(TempPath);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show(e.Message);
|
|
throw;
|
|
}
|
|
//AddPathProtection(TempPath);
|
|
}
|
|
}
|
|
|
|
//public static void AddPathProtection(string _Directory)
|
|
//{
|
|
// string UserName = "";
|
|
|
|
// SelectQuery query = new SelectQuery("Win32_UserAccount");
|
|
// ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
|
|
// foreach (ManagementObject envVar in searcher.Get())
|
|
// {
|
|
// UserName = envVar["Domain"].ToString() + "\\" + envVar["Name"].ToString();
|
|
|
|
// DirectorySecurity ds = Directory.GetAccessControl(_Directory);
|
|
// FileSystemAccessRule fsa = new FileSystemAccessRule(UserName, FileSystemRights.FullControl, AccessControlType.Deny);
|
|
|
|
// ds.AddAccessRule(fsa);
|
|
// Directory.SetAccessControl(_Directory, ds);
|
|
|
|
// }
|
|
//}
|
|
|
|
//public static void RemovePathProtection(string _Directory)
|
|
//{
|
|
// string UserName = "";
|
|
|
|
// SelectQuery query = new SelectQuery("Win32_UserAccount");
|
|
// ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
|
|
// foreach (ManagementObject envVar in searcher.Get())
|
|
// {
|
|
// UserName = envVar["Domain"].ToString() + "\\" + envVar["Name"].ToString();
|
|
|
|
// DirectorySecurity ds = Directory.GetAccessControl(_Directory);
|
|
// FileSystemAccessRule fsa = new FileSystemAccessRule(UserName, FileSystemRights.FullControl, AccessControlType.Deny);
|
|
|
|
// ds.RemoveAccessRule(fsa);
|
|
// Directory.SetAccessControl(_Directory, ds);
|
|
|
|
// }
|
|
//}
|
|
|
|
//public static void RemoveCurrentUserProtecion(string _Directory)
|
|
//{
|
|
// string UserName = "";
|
|
|
|
// UserName = Environment.UserDomainName + "\\" + Environment.UserName;
|
|
|
|
// DirectorySecurity ds = Directory.GetAccessControl(_Directory);
|
|
// FileSystemAccessRule fsa = new FileSystemAccessRule(UserName, FileSystemRights.FullControl, AccessControlType.Deny);
|
|
|
|
// ds.RemoveAccessRule(fsa);
|
|
// Directory.SetAccessControl(_Directory, ds);
|
|
|
|
//}
|
|
|
|
//public static void AddCurrentUserProtecion(string _Directory)
|
|
//{
|
|
// string UserName = "";
|
|
|
|
// UserName = Environment.UserDomainName + "\\" + Environment.UserName;
|
|
|
|
// DirectorySecurity ds = Directory.GetAccessControl(_Directory);
|
|
// FileSystemAccessRule fsa = new FileSystemAccessRule(UserName, FileSystemRights.FullControl, AccessControlType.Deny);
|
|
|
|
// ds.AddAccessRule(fsa);
|
|
// Directory.SetAccessControl(_Directory, ds);
|
|
|
|
//}
|
|
|
|
public static void RemovePath(string _Directory)
|
|
{
|
|
System.IO.DirectoryInfo adresar = new System.IO.DirectoryInfo(_Directory);
|
|
|
|
foreach (System.IO.FileInfo file in adresar.GetFiles()) file.Delete();
|
|
foreach (System.IO.DirectoryInfo subDirectory in adresar.GetDirectories()) subDirectory.Delete(true);
|
|
|
|
Directory.Delete(_Directory);
|
|
}
|
|
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
private static extern bool DefineDosDevice(int flags, string devname, string path);
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize);
|
|
|
|
public static void MapDrive(char letter, string path)
|
|
{
|
|
if (!DefineDosDevice(0, devName(letter), path))
|
|
throw new Win32Exception();
|
|
}
|
|
public static void UnmapDrive(char letter)
|
|
{
|
|
if (!DefineDosDevice(2, devName(letter), null))
|
|
throw new Win32Exception();
|
|
}
|
|
public static string GetDriveMapping(char letter)
|
|
{
|
|
var sb = new StringBuilder(259);
|
|
if (QueryDosDevice(devName(letter), sb, sb.Capacity) == 0)
|
|
{
|
|
// Return empty string if the drive is not mapped
|
|
int err = Marshal.GetLastWin32Error();
|
|
if (err == 2) return "";
|
|
throw new Win32Exception();
|
|
}
|
|
return sb.ToString().Substring(4);
|
|
}
|
|
|
|
private static string devName(char letter)
|
|
{
|
|
return new string(char.ToUpper(letter), 1) + ":";
|
|
}
|
|
|
|
}
|
|
|
|
}
|