29.01.2018 اداة للحصول على مسارات المجلدات التي لاتحتاج لصلاحيات ادمن في نظام تشغيل ويندوز [7,8,10]


  • الـلـهـم انـصـر اخـوانـنـا الـمـسـلـمـيـن فـي بـورمـا وكـن مـعـهـم يـاربـاه يـاربـاه

BasharBachir

اللهم اغفر له وارحمه
طاقم الإدارة
28 أكتوبر 2018
2,620
3,576
1
حياكم الله ياشباب
الاخ امير نزل من كم شهر فكرته الرائعة عن عمل اداة تقوم بجلب اسماء المجلدات
في ويندوز وسستم32 والتاكد من كل قابلية كل مجلد للكتابة عليه
الاخ شرح بشكل مفصل الخطوات وانا اتبعتهم من كم شهر وسويت الاداة
وقلت بنزلها لكم الان ..تم بالفديو تجربتها على 7 و10 وتعمل ايضا على 8 و 8.1
الاستخدام : شغل الاداة اولا بصلاحيات ادمن رح تنتج لك ملف نصي
ثم اعد تشغيل الاداة بدون صلاحيات رح تنتج لك ملف اخر فيه مسارات المجلدات
في مسار السستم32 والويندوز ولاتحتاج صلاحيات ادمن للنسخ عليها
سورس الاداة هنا لمن يريد




C#:
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security.AccessControl;
using System.Security.Principal;
 
namespace Folders_Permission
{
    internal static class Program
    {
        [STAThread]
        private static void Main()
        {
            if (IsAdministrator())
            {
     var directories2 = Directory.GetDirectories("C:\\Windows");
     var directories3 = Directory.GetDirectories("C:\\Windows\\System32");
    var s = directories2.Aggregate(String.Empty, (current, v) => current + v + Environment.NewLine);
    s = directories3.Aggregate(s, (current, v) => current + v + Environment.NewLine);
  Type.GetType("System.IO.File")?.GetMethod("WriteAllText", new[] { typeof(string), typeof(string) })
         ?.Invoke(null, new object[] { "Directories Names.txt", s });
            }
            else
            {
     var ss = File.ReadLines("Directories Names.txt").Where(DirectoryCanCreate).
Aggregate(String.Empty, (current, line) => current + line + Environment.NewLine);
Type.GetType("System.IO.File")?.GetMethod("WriteAllText", new[] { typeof(string), typeof(string) })
         ?.Invoke(null, new object[] { "Without UAC.txt", ss });
            }
        }
        public static bool DirectoryCanCreate(string directoryPath)
        {
            if (string.IsNullOrEmpty(directoryPath)) return false;
            try
            {
                var rules = Directory.GetAccessControl(directoryPath).GetAccessRules(true, true, typeof(SecurityIdentifier));
                var identity = WindowsIdentity.GetCurrent();
                foreach (FileSystemAccessRule rule in rules)
                {
    if (identity.Groups == null || !identity.Groups.Contains(rule.IdentityReference)) continue;
  if ((FileSystemRights.CreateFiles & rule.FileSystemRights) != FileSystemRights.CreateFiles) continue;
   if (rule.AccessControlType == AccessControlType.Allow) return true;
                }
            }
            catch
            {
                // ignored
            }
 
            return false;
        }
        public static bool IsWriteable(DirectoryInfo me)
        {
            AuthorizationRuleCollection rules;
            WindowsIdentity identity;
            try
            {
                rules = me.GetAccessControl().GetAccessRules(true, true, typeof(SecurityIdentifier));
                identity = WindowsIdentity.GetCurrent();
            }
            catch (UnauthorizedAccessException uae)
            {
                Debug.WriteLine(uae.ToString());
                return false;
            }
            var isAllow = false;
            if (identity.User == null) return false;
            var userSid = identity.User.Value;
            foreach (FileSystemAccessRule rule in rules)
            {
                if (identity.Groups == null || rule.IdentityReference.ToString() != userSid &&
                    !identity.Groups.Contains(rule.IdentityReference)) continue;
                if ((rule.FileSystemRights.HasFlag(FileSystemRights.Write) ||
                     rule.FileSystemRights.HasFlag(FileSystemRights.WriteAttributes) ||
                     rule.FileSystemRights.HasFlag(FileSystemRights.WriteData) ||
                     rule.FileSystemRights.HasFlag(FileSystemRights.CreateDirectories) ||
                     rule.FileSystemRights.HasFlag(FileSystemRights.CreateFiles)) && rule.AccessControlType == AccessControlType.Deny)
                    return false;
                if (rule.FileSystemRights.HasFlag(FileSystemRights.Write) &&
                    rule.FileSystemRights.HasFlag(FileSystemRights.WriteAttributes) &&
                    rule.FileSystemRights.HasFlag(FileSystemRights.WriteData) &&
                    rule.FileSystemRights.HasFlag(FileSystemRights.CreateDirectories) &&
                    rule.FileSystemRights.HasFlag(FileSystemRights.CreateFiles) && rule.AccessControlType == AccessControlType.Allow)
                    isAllow = true;
            }
            return isAllow;
        }
    
public static bool IsAdministrator()
        {
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
        }
    }
}
الاداة والفديو بالمرفقات
 

المرفقات

إخلاء مسؤلية

  • المنتدى غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به protection-tips غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه التعليقات المنشورة لا تعبر عن رأي معهد المنتدى ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر).).

الإنتقال السريع

User Menu

تابعنا على الفيسبوك