الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الحصول على أيقونة البارتشين الحالية

بدأه JBR07 في 18 نوفمبر 2013 · 11 رد · 720 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ممكن طريقة الحصول على أيقونة البارتشين وبعض المعلومات الاساسية عن البارتشين مثل مساحته وكمية المساحة المستخدمه والباقيه وبعض المعلومات الاخرى

#2

السلام عليكم

يمكن الحصول على ايقون البارتيشن من خلال دول API

 

اما للحصول على معلومات كل بارتيشن استخدم  System.IO.DriveInfo

 

مرفق مثال يوضح ما سبق

WindowsApplicationDrive Letter.rar

WindowsApplicationDrive Letter.rar

تم تعديل هذه المشاركة بواسطة SOLO.NET في 19 نوفمبر 2013 في 01:33

1

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#3

الف شكر عبد الخالق :)

تم الحصول على الايفونه ووضعتها داخل picturebox :huh:

وتم الحصول على جميع المعلومات عن الداريفر لكن الvolume label دائما تكون فاضيه الحقيقه مش عارف ليش -_-

ممكن مساعده او توضيح ما هي الvolume label :excl:

ولو سمحت ممكن طريقة كلي احصل على المساحه بالGB مش byte

تم تعديل هذه المشاركة بواسطة JBR07 في 19 نوفمبر 2013 في 19:13

#4

السلام عليكم 

الــVolum Label  هو اسم الدرايف الذى يقوم المستخدم باسناده له كلك يمين على اى درايف لديك rename وسيظهر من خلال  drv.VolumeLabel

 

لتحويل الى GB  من بايت  فقط نقسم على 1024/1024/1024

 

نعمل داله كالتالي

  Private Function GetSizeInGB(size As Long) As Double
        Return (size / 1024 / 1024 / 1024)
    End Function

نعدل فى كود المثال السابق فى الحدث form Load ليصبح كالتالي

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListView1.LargeImageList = ImageList1
        For Each drv As System.IO.DriveInfo In My.Computer.FileSystem.Drives
            ImageList1.Images.Add(GetDriveIcon(drv.Name, IconSize.LargeIcon))
            Dim newItem As New ListViewItem(drv.Name, Index)
            Index = Index + 1
            If Not drv.DriveType = IO.DriveType.Removable Then
                newItem.SubItems.Add("Total Siz in GB :" + GetSizeInGB(drv.TotalSize).ToString("0.00") + "GB " + "Volume Label :" + drv.VolumeLabel)

            End If
            ListView1.Items.Add(newItem)


        Next

    End Sub

وهذا الكود للفورم بالكامل

Imports System.Runtime.InteropServices
Imports System.Drawing


Public Class Form1
    <Flags()> Private Enum SHGFI
        SmallIcon = &H1
        LargeIcon = &H0
        Icon = &H100
        DisplayName = &H200
        Typename = &H400
        SysIconIndex = &H4000
        UseFileAttributes = &H10
    End Enum

    Public Enum IconSize
        SmallIcon = 1
        LargeIcon = 0
    End Enum
    <StructLayout(LayoutKind.Sequential)> _
    Private Structure SHFILEINFO
        Public hIcon As IntPtr
        Public iIcon As Integer
        Public dwAttributes As Integer
        <MarshalAs(UnmanagedType.LPStr, SizeConst:=260)> Public szDisplayName As String
        <MarshalAs(UnmanagedType.LPStr, SizeConst:=80)> Public szTypeName As String

        Public Sub New(ByVal B As Boolean)
            hIcon = IntPtr.Zero
            iIcon = 0
            dwAttributes = 0
            szDisplayName = vbNullString
            szTypeName = vbNullString
        End Sub
    End Structure

    Private Declare Auto Function SHGetFileInfo Lib "shell32" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlagsn As SHGFI) As Integer
  
    Public Function GetDriveIcon(ByVal Path As String, Optional ByVal IconSize As IconSize = IconSize.SmallIcon, Optional ByVal SaveIconPath As String = "") As Icon
        Dim info As New SHFILEINFO(True)
        Dim cbSizeInfo As Integer = Marshal.SizeOf(info)
        Dim flags As SHGFI = SHGFI.Icon Or SHGFI.UseFileAttributes
        flags = flags + IconSize
        SHGetFileInfo(Path, 256, info, cbSizeInfo, flags)
        GetDriveIcon = Icon.FromHandle(info.hIcon)
        If SaveIconPath <> "" Then
            Dim FileStream As New IO.FileStream(SaveIconPath, IO.FileMode.Create)
            GetDriveIcon.Save(FileStream)
            FileStream.Close()
        End If
    End Function
  
    Private Index As Integer = 0
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListView1.LargeImageList = ImageList1
        For Each drv As System.IO.DriveInfo In My.Computer.FileSystem.Drives
            ImageList1.Images.Add(GetDriveIcon(drv.Name, IconSize.LargeIcon))
            Dim newItem As New ListViewItem(drv.Name, Index)
            Index = Index + 1
            If Not drv.DriveType = IO.DriveType.Removable Then
                newItem.SubItems.Add("Total Siz in GB :" + GetSizeInGB(drv.TotalSize).ToString("0.00") + "GB " + "Volume Label :" + drv.VolumeLabel)

            End If
            ListView1.Items.Add(newItem)


        Next

    End Sub
    Private Function GetSizeInGB(size As Long) As Double
        Return (size / 1024 / 1024 / 1024)
    End Function
End Class

تم تعديل هذه المشاركة بواسطة SOLO.NET في 19 نوفمبر 2013 في 22:28

1

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#5

الكود شغال تمام تسلم ايديك

#6

سؤال

هل توجد طريقة لقفل الدرايفر بكلمة سر بالvb.net

سواء باستخدام bitlocker او اي طريقه اخرى؟؟؟

#7

بانتظاركم يا اخوان

#8

برنامج يقوم باغلاق البارتشين بس المشكله انو ما بنحط عليه باسورد للبارتشين فقط يقوم باغلاقه عن طريق الريجستري

رابط السورس كود

http://www.mediafire.com/download/cut82zdt2wl37fr/Drive%2520Locker.rar

:)

#9

السلام عليكم

 

 

بخصوص الــBit Locker يمكن برمجته من خلال 

Win32_EncryptableVolume class

راجع الرابط التالى MSDN

http://msdn.microsoft.com/en-us/library/aa376483.aspx

 

 

المثال المرفق يوضح كيفيه معرفه حاله البارتشن 

 

اما لتطبيق الطرق Method  للكلاس اعلاه استخدم

 

InvokeMethod

مثلا لنفرض ان لدينا درايف مشفر بالبت لوكر نفك تشفيره باستدعاء Decrypt

mo.InvokeMethod("Decrypt", Nothing, Nothing).ToString

للمزيد راجع MSDN

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#10

السلام عليكم

 

 

بخصوص الــBit Locker يمكن برمجته من خلال 

Win32_EncryptableVolume class

راجع الرابط التالى MSDN

http://msdn.microsoft.com/en-us/library/aa376483.aspx

 

 

المثال المرفق يوضح كيفيه معرفه حاله البارتشن 

الكود كالتالي

نضيف فئة للمشروع ولنسميه WMIHelper

Imports System.Management

Public Class WMIHelper
    Public Shared Function DriveStatus() As List(Of String)
        Dim BitLocker As List(Of String) = New List(Of String)()
        Dim path As ManagementPath = New ManagementPath()
        path.Server = Environment.MachineName
        path.NamespacePath = "\root\CIMV2\Security\MicrosoftVolumeEncryption"
        path.ClassName = "Win32_EncryptableVolume"
        Dim options As ConnectionOptions = New ConnectionOptions()
        Dim scope As ManagementScope = New ManagementScope(path, options)
        Dim getOptions As ObjectGetOptions = New ObjectGetOptions()
        Dim management As ManagementClass = New ManagementClass(scope, path, getOptions)


        Dim volumes As ManagementObjectCollection = management.GetInstances()
        For Each mo As ManagementObject In volumes
            ''هنا نقوم بفك التشفير للبت لوكر
            'If mo("ProtectionStatus").ToString = "1" Then

            '    BitLocker.Add(mo.InvokeMethod("Decrypt", Nothing, Nothing).ToString)


            'End If

            BitLocker.Add(mo("DriveLetter").ToString)
            BitLocker.Add(mo("ProtectionStatus").ToString)

        Next
        Return BitLocker
    End Function


End Class

فى الفورم نضيف TextBox  ونجعل الخاصيه MutiLine  True 

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        txtBLInfo.Multiline = True
        If My.User.IsInRole("administrators") = True Then

            For Each s As String In WMIHelper.DriveStatus

                Select Case s
                    Case "0"
                        txtBLInfo.Text = txtBLInfo.Text + "PROTECTION OFF" + vbCrLf
                    Case "1"
                        txtBLInfo.Text = txtBLInfo.Text + "PROTECTION ON" + vbCrLf
                    Case "2"
                        txtBLInfo.Text = txtBLInfo.Text + "PROTECTION UNKNOWN" + vbCrLf
                    Case Else
                        txtBLInfo.Text = txtBLInfo.Text + s
                End Select

            Next

        Else
            MessageBox.Show("Administrators access rights are required.", "Not Administrator")

            End
        End If
    End Sub
End Class

ولا تنسى ان تضيف Reference  System.managment

 

 

اما لتطبيق الطرق Method  للفئة Win32_EncryptableVolume  استخدم

 

 

InvokeMethod

مثلا لنفرض ان لدينا درايف مشفر بالبت لوكر نفك تشفيره باستدعاء Decrypt

mo.InvokeMethod("Decrypt", Nothing, Nothing).ToString

للمزيد راجع MSDN

WindowsApplicationBitLocker.rar

تم تعديل هذه المشاركة بواسطة SOLO.NET في 23 نوفمبر 2013 في 07:53

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#11

في الحقيقة لم افهم كيف استطيع اقفال بارتشين بالكود :blush:

اتمنى توضح اكثر :rolleyes:

#12

مثلا الكود التالى يقوم بتشفير الدرايف F

  Public Shared Function DriveStatus() As List(Of String)
        Dim BitLocker As List(Of String) = New List(Of String)()
        Dim path As ManagementPath = New ManagementPath()
        path.Server = Environment.MachineName
        path.NamespacePath = "\root\CIMV2\Security\MicrosoftVolumeEncryption"
        path.ClassName = "Win32_EncryptableVolume"
        Dim options As ConnectionOptions = New ConnectionOptions()
        Dim scope As ManagementScope = New ManagementScope(path, options)
        Dim getOptions As ObjectGetOptions = New ObjectGetOptions()
        Dim management As ManagementClass = New ManagementClass(scope, path, getOptions)


        Dim volumes As ManagementObjectCollection = management.GetInstances()
        For Each mo As ManagementObject In volumes
            'هنا نقوم بعمل كلمه السر ومن ثم التشفير وثم اغلاق الدرايف
            If mo("ProtectionStatus").ToString = "0" And mo("DriveLetter").ToString = "G:" Then
                Dim s() As Object = {"My PAssword", "MyPAssword123"}
                Dim i() As Object = {0, 0}
                Dim op As New System.Management.InvokeMethodOptions
                mo.InvokeMethod("ProtectKeyWithPassphrase", s)
                mo.InvokeMethod("Encrypt", i)
                mo.InvokeMethod("Lock", i)



            End If

تم تعديل هذه المشاركة بواسطة SOLO.NET في 24 نوفمبر 2013 في 02:29

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

مواضيع مشابهة