none
VB2010怎样结束注册表进程? RRS feed

  • 问题

  •     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If TextBox1.Text = "" Then
            Else
                My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", "计算机\" & TextBox1.Text)
                Dim pro As Process() = Process.GetProcessesByName("regedit.exe")
                If pro.Length = 1 Then
                    Shell("cmd /c taskkill /f /im regedit.exe", vbHide)
                Else
                    Process.Start("regedit.exe")
                End If
            End If
        End Sub

    刚学习VB,是个新手。我想实现:如果注册表已经打开就结束它,上面代码中这句:Shell("cmd /c taskkill /f /im regedit.exe", vbHide),如果注册表已经打开,怎么结束不了注册表?希望高手能指点指点~~谢了~~

    2010年6月4日 9:58

答案

  • 你好!

         我就是用Windows7测试的!可以关闭RegEdit进程!你的这行代码:

         If p.ProcessName = "regedit.exe" Then

         把扩展名去掉:

         If p.ProcessName = "regedit" Then


    周雪峰
    • 已建议为答案 X.TK 2010年6月4日 13:05
    • 已标记为答案 Kira Qian 2010年6月7日 8:12
    2010年6月4日 12:31
    版主
  • 你好!

         这样实现:

      For Each p As Process In Process.GetProcesses()

        If p.ProcessName = "regedit" Then


            p.Kill()

        End If
    Next
    我已经在本机上测试了,希望对你有帮助!

     

     

     


    周雪峰
    • 已标记为答案 Kira Qian 2010年6月7日 8:12
    2010年6月4日 11:55
    版主

全部回复

  • 你好!

         这样实现:

      For Each p As Process In Process.GetProcesses()

        If p.ProcessName = "regedit" Then


            p.Kill()

        End If
    Next
    我已经在本机上测试了,希望对你有帮助!

     

     

     


    周雪峰
    • 已标记为答案 Kira Qian 2010年6月7日 8:12
    2010年6月4日 11:55
    版主
  •     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", "计算机\" & TextBox1.Text)
            Dim pro As Process() = Process.GetProcessesByName("regedit.exe")
            If pro.Length = 1 Then
                For Each p As Process In Process.GetProcesses()
                    If p.ProcessName = "regedit.exe" Then
                        p.Kill()
                    End If
                Next
            Else
                Process.Start("regedit.exe")
            End If

        End Sub

    End Class

    这样吗?在注册表编辑器打开的情况下也是不能将它关闭啊~~我的系统是WIN7。

    2010年6月4日 12:17
  • 你好!

         我就是用Windows7测试的!可以关闭RegEdit进程!你的这行代码:

         If p.ProcessName = "regedit.exe" Then

         把扩展名去掉:

         If p.ProcessName = "regedit" Then


    周雪峰
    • 已建议为答案 X.TK 2010年6月4日 13:05
    • 已标记为答案 Kira Qian 2010年6月7日 8:12
    2010年6月4日 12:31
    版主
  • 受教了!!

    还能这样!!

    2010年6月4日 13:06
  • X.TK,你好!

         很高兴认识你啊!

         我的MSN:xuefeng1982@live.cn


    周雪峰
    2010年6月4日 13:19
    版主
  • 哈哈,谢谢啊!!
    2010年6月4日 13:24
  • 奥~原来加了扩展名是不行的~真是谢谢版主了~~~

    2010年6月4日 15:25
  • 不客气啊!
    周雪峰
    2010年6月4日 16:03
    版主