منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف يمكن تمكين أداة من العمل بالوضع الآمن خلال عمل البرنامج
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

يوجد لدي برنامج من خلاله استطيع اطفاء service معينة أو تشغيلها ...

لكن هذا الزر يحتاج للعمل تحت وضع run as administrator ، ولكني لا اريد تفعيلها من البداية مع البرنامج ولكني اريد تفعيلها فقط عند الضغط على هذا الزر ، كيف افعل هذا ؟
هذا الكود يغلق البرنامج ثم يعيد بدئه كمسؤول:
PHP كود :
Dim isEleveted As Boolean
        Dim identity 
As Security.Principal.WindowsIdentity Security.Principal.WindowsIdentity.GetCurrent()
        
Dim principal As New Security.Principal.WindowsPrincipal(identity)
        
isEleveted principal.IsInRole(Security.Principal.WindowsBuiltInRole.Administrator)
        If 
Not isEleveted Then
            
If MsgBox("Do you want to run as an administrator?"MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                Dim P 
As Process Process.GetCurrentProcess
                Dim SF 
As New Diagnostics.ProcessStartInfo
                SF
.FileName Application.ExecutablePath
                SF
.Verb "runas"
                
P.StartInfo SF
                P
.Start()
            
End If
            
Application.Exit()
        
End If 

كما يمكنك إضافة ملف صغير بجانب برنامجك ينفذ هذا الأمر فقط و يبدأ كمسؤول عندما يأمره برنامجك بذلك.
اخي علي الحداد :

المشكلة انه يوجد في البرنامج مربع نص فيه خاصية السحب والإلقاء ، عند تفعيل الأمر ( تشغيل كمسؤول ) مع البرنامج في البداية يتم تعطيل الإلقاء في هذا الوضع ، لذلك أريد أن يعمل وضع المسؤول فقط مع الزر ، هل يمكن فعل ذلك ؟
في البداية أنشئ Console Application و ليكن هذا كوده:
PHP كود :
Module Module1

    Sub Main
()
        
Dim args As ObjectModel.ReadOnlyCollection(Of String) = My.Application.CommandLineArgs
        
If args.Count 0 Then
            Dim argsStr 
As String() = New String(args.Count 1) {}
            
args.CopyTo(argsStr0)
            
Dim txt As String Strings.Join(argsStr" ")
            
MsgBox(txt'''Now do whatever you want with txt
        End If
    End Sub
End Module 

الآن ضع الملف التنفيذي لهذا الـConsoleApplication بجانب الملف التنفيذي لمشروعك
و في حدث الإفلات في مشروعك ضع الكود:
PHP كود :
Dim isEleveted As Boolean
        Dim identity 
As Security.Principal.WindowsIdentity Security.Principal.WindowsIdentity.GetCurrent()
        
Dim principal As New Security.Principal.WindowsPrincipal(identity)
        
isEleveted principal.IsInRole(Security.Principal.WindowsBuiltInRole.Administrator)
        If 
Not isEleveted Then
            MsgBox
("To do this action you will need the administrator authorities."MsgBoxStyle.OkOnly)
            
Dim P As New Process
            Dim SF 
As New Diagnostics.ProcessStartInfo
            SF
.FileName Application.StartupPath "\ConsoleApplication1"
            
SF.Verb "runas"
            
SF.WindowStyle ProcessWindowStyle.Hidden
            SF
.Arguments "The text dropped on the TextBox"
            
P.StartInfo SF
            P
.Start()
        
End If 

جرب الكود.. ثم غير ما يلزم في الـConsoleApplication