Feedback

VB - Taskmanageraufruf verhindern

Veröffentlicht von am 9/25/2007
(2 Bewertungen)
Nachdem mich auf ein Posting der folgende Kommentar erreicht hat: "Soso, tolle sachen. Was aber interessanter wäre und noch nicht hier ist: Task-Manger verstecken - kann das jemand?"

bezogen auf den Link:
http://dotnet-snippets.de/dns/Snippet_detail.aspx?=427 kommt hier der Code, und die Klasse um den Taskmanageraufruf zu unterbinden (Es geht zwar auch einfacher, aber nicht so sicher).

Der Befehtl wirkt sich auf den derzeit angemeldeten User an. Verwendet man anstelle CurrentUser den Registry Schlüssel Local_Machine ... .

Ist aber nicht sehr zu empfehlen !!!
''Klasse 
Public Class clsHideTaskManager


    Implements IDisposable

    Public Enum TaskManagerState As Integer
        Disabled = 1
        Enabled = 0
    End Enum

    Public Reg_hkcu As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser
    Public Const subKey As String = "Software\Microsoft\Windows\CurrentVersion\Policies\System"

    Public Sub SetTaskManager(ByVal _state As TaskManagerState)
        Try
            Dim reg As Microsoft.Win32.RegistryKey = Reg_hkcu.OpenSubKey(subKey, True)

            If reg Is Nothing AndAlso _state = TaskManagerState.Disabled Then
                reg = Reg_hkcu.CreateSubKey(subKey)
            ElseIf reg Is Nothing Then
                Exit Sub
            End If
            reg.SetValue("DisableTaskMgr", CInt(_state))
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

    Public Function GetTaskManagerState() As TaskManagerState
        Dim _val As Integer = -1
        Dim _reg As Microsoft.Win32.RegistryKey = Reg_hkcu.OpenSubKey(subKey)
        ''Wird nichts gemacht ist der Taskmanageraufruf moeglich
        If _reg Is Nothing Then
            Return TaskManagerState.Enabled
        Else
            _val = CInt(_reg.GetValue("DisableTaskMgr"))
        End If
        Return CType(IIf(_val = 1, TaskManagerState.Disabled, TaskManagerState.Enabled), TaskManagerState)
    End Function

    Protected Overrides Sub Finalize()
        Me.Dispose()
        MyBase.Finalize()
    End Sub

    Public Sub Dispose() Implements System.IDisposable.Dispose
        Try
            Reg_hkcu.Close()
            Reg_hkcu = Nothing
            GC.SuppressFinalize(Me)
        Catch
        End Try
    End Sub
End Class


''Mögliche Anwendung/Aufruf:
''Auf einem Formual eine CheckBox und ein Button plazieren, die Klasse Win32 Registry importieren und lost gehts

Imports Microsoft.Win32.Registry

Public Class Form1

    Private cls As New clsHideTaskManager

    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        cls.Dispose()
    End Sub

    Private Sub Loaded(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        cbDisableTM.Checked = cls.GetTaskManagerState = clsHideTaskManager.TaskManagerState.Disabled
    End Sub

 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        cls.SetTaskManager(CType(IIf(cbDisableTM.Checked, clsHideTaskManager.TaskManagerState.Disabled, _
                 clsHideTaskManager.TaskManagerState.Enabled), clsHideTaskManager.TaskManagerState))

        Button1.Enabled = False
    End Sub
End Class
Abgelegt unter TaskManager, Windows.

1 Kommentare zum Snippet

Alois T. schrieb am 11/7/2007:
It´s really Usefull. Does it work an Windows Vista?
 

Logge dich ein, um hier zu kommentieren!