Vb.Net:SQLEXPRESS和SQLBROWSER的LogonMode和StartMode

时间:2014-11-22 16:09:36

标签: sql-server vb.net regedit sqlbrowser logonserver

使用VB.net我们假设要更改Sql Express和Sql Browser的LogonMode(Not LoginMode)和StartMode。

我们的意思是:
如果(Sql Express的StartMode<> Automatic)则
自动化
结束如果

如果(Sql Browser的StartMode<> Automatic)那么
自动化
结束如果

如果(Sql Express的LogonMode<> NetworkService)那么
使它成为NetworkService
结束如果

如果(Sql Browser的LogonMode<> NetworkService)那么
使它成为NetworkService
结束如果

如果可以通过更改RegEdit中的任何键值来完成,那将更容易。
有什么方法可以使用vb.net吗?

1 个答案:

答案 0 :(得分:0)

在RegEdit中,我们终于可以找到Sql Express和Sql Browser Service值。
链接:HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ SQLBrowser \
登录模式是:ObjectName
启动模式为:启动(1:ChangePending,2:Automatic,3:Manual,4:Disabled)

使用以下Vb.net代码,我们可以解决问题。

Imports Microsoft.Win32 

Private Sub ChangeSettings()
    Dim RegKey As RegistryKey

    'Changes for SQL Browser.'
    RegKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Services\\SQLBrowser", True)
    If (RegKey.GetValue("ObjectName") <> "NT AUTHORITY\NetworkService") Then
        RegKey.SetValue("ObjectName", "NT AUTHORITY\NetworkService", RegistryValueKind.String)
    End If
    If (RegKey.GetValue("Start") <> 2) Then
        RegKey.SetValue("Start", 2, RegistryValueKind.DWord)
    End If

    'Changes for SQL Express.'
    RegKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Services\\MSSQL$SQLEXPRESS", True)
    If (RegKey.GetValue("ObjectName") <> "NT AUTHORITY\NetworkService") Then
        RegKey.SetValue("ObjectName", "NT AUTHORITY\NetworkService", RegistryValueKind.String)
    End If
    If (RegKey.GetValue("Start") <> 2) Then
        RegKey.SetValue("Start", 2, RegistryValueKind.DWord)
    End If
End Sub