VB.NET, Framework 3.5 | Папка Windows & ProgramFilesX86 в виде строки? - PullRequest
0 голосов
/ 16 сентября 2018

С NET Framework 4.5 GetFolderPath (SpecialFolder.Windows), метод GetFolderPath (SpecialFolder.ProgramFilesX86) работает.С NET Framework 3.5 это не так.Я должен сделать это со старой платформой.Ребята, не могли бы вы помочь мне?Спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

Targeting .Net Framework 3.5, вы можете получить все переменные среды с помощью Environment.GetEnvironmentVariables () .Этот метод существует с .Net 1.1 (и все еще действует в .Net 4.7.2)

Dim dict As IDictionary = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)

EnvironmentVariableTarget может быть ограничено EnvironmentVariableTarget.Machine или EnvironmentVariableTarget.Userдля подмножества значений.

Когда вы проанализируете возвращенный словарь, вы увидите, что он содержит две переменные (среди прочих):

ProgramFiles иProgramFiles(x86) ← Без пробелов

Их путь можно затем получить с помощью:

Dim ProgramFiles As String = Environment.GetEnvironmentVariable("ProgramFiles")

Dim ProgramFilesx86 As String = Environment.GetEnvironmentVariable("ProgramFiles(x86)")

Возвращаемые значения зависят как от ОС, так и от разрядности приложения.
Когда программа нацелена на x86 на машине x64, они оба вернут ...\Program Files (x86)

На машине x86 они оба вернут ...\Program Files

...