Initial commit
This commit is contained in:
151
Mip/classDiskOperations.cs
Normal file
151
Mip/classDiskOperations.cs
Normal file
@@ -0,0 +1,151 @@
|
||||
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
|
||||
{
|
||||
Directory.CreateDirectory(TempPath);
|
||||
//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) + ":";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user