我一直在各地圍繞谷歌搜索和閱讀這篇文章如何某些C#代碼轉換爲VB.NET
C# How to get SQL Server installation path programatically?
,這正是我需要在VB.NET,但我不是擅長將此代碼翻譯成VB.NET代碼。所以,任何幫助將不勝感激。謝謝。
注:我使用SQL Server 2005和Visual Basic 2008
我一直在各地圍繞谷歌搜索和閱讀這篇文章如何某些C#代碼轉換爲VB.NET
C# How to get SQL Server installation path programatically?
,這正是我需要在VB.NET,但我不是擅長將此代碼翻譯成VB.NET代碼。所以,任何幫助將不勝感激。謝謝。
注:我使用SQL Server 2005和Visual Basic 2008
雖然這個問題最初是關於檢索SQL Server的安裝路徑,但我覺得它更多的是代碼翻譯問題(解決方案已經存在,只是沒有使用正確的語言)。
但後來我認爲原始代碼中的方法相當鈍。
Evan爲您提供了我認爲是現有解決方案的可行翻譯。但是,執行此特定任務可能更容易 - 假設您只需找到已連接到的實例的安裝路徑,並假設可以讀取註冊表的用戶也具有VIEW SERVER STATE
權限 - 是要發佈從你的程序對the DMV sys.dm_os_loaded_modules
這個簡單的查詢:
SELECT name
FROM sys.dm_os_loaded_modules
WHERE name LIKE '%sqlservr.exe';
這會給你這樣的事情:
C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL11.SQL2012 \ MSSQL \ BINN \ SQLSERVR。 exe
您需要進行一些解析,具體取決於您要做什麼(例如,你想停止在MSSQL
,或Binn
?),但這比讀取註冊表或其他方法在那裏恕我直言,要容易得多。
我只是用一個編碼轉換器......有隻需要改變基本的東西..
Using sqlServerKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server")
For Each subKeyName As String In sqlServerKey.GetSubKeyNames()
If subKeyName.StartsWith("MSSQL.") Then
Using instanceKey As RegistryKey = sqlServerKey.OpenSubKey(subKeyName)
Dim instanceName As String = instanceKey.GetValue("").ToString()
If instanceName = "MSSQLSERVER" Then
'say
Dim path__1 As String = instanceKey.OpenSubKey("Setup").GetValue("SQLBinRoot").ToString()
path__1 = Path.Combine(path__1, "sqlserver.exe")
Return path__1
End If
End Using
End If
Next
End Using
如果你只是讀C#快速的文章,你會發現這串聲明不同,和少量的語法差異存在諸如foreach
VS for each
可以爲一些較常見的閱讀here差異。
這幾乎從來沒有失敗! :)好運
我使用了一個非常好的(離線)工具,叫做Convert .NET Free
這是一個從www.fishcodelib.com
這裏有一個直接鏈接到最新版本(截至19/04/14)大小: 2。06MB,文件:郵編:
希望這是一些使用的;)
附:此軟件需要.NET Framework 4.5。
那麼,你應該看看像http://www.developerfusion.com/tools/convert/csharp-to-vb/ – 2013-03-23 13:57:32