Найдите папку с играми Steam

Как я могу получить доступ к папке с игрой в Steam без ее жесткого кодирования?

Могу ли я вместо жесткого кодирования C:\Steam\steamapps\common\<game_folder>\GameData в своем коде использовать что-то, связанное с steamappid игры, для автоматического получения этой информации?


person Thomsen1707    schedule 04.12.2015    source источник


Ответы (1)


Чтобы получить папку с играми Steam, вам необходимо выполнить следующие действия:

  1. найти папку установки стим
  2. проверьте Steam acf файлы и libraryfolders.vdf

Вы можете найти Steam InstallPath в реестре Windows:

  • 32-бит: HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam
  • 64-разрядная версия: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Valve\Steam

Вы можете читать значение из ключа реестра, используя этот код:

Dim strSteamInstallPath as String = My.Computer.Registry.GetValue(
    "HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam", "InstallPath", Nothing)

MsgBox("The install path is " & strSteamInstallPath)

Если у вас есть основная папка Steam (та, которая содержит steam.exe), вы можете прочитать папку установки игр из appmanifest_<steamappid>.acf файлов, содержащихся в подпапке \steamapps.

Например, appmanifest_2280.acf содержит информацию о Ultimate Doom.

Вы можете выполнить поиск определенного steamappid или проанализировать все файлы и получить название игры из ключа name.

Также проверьте libraryfolders.vdf в подпапке \steamapps для других папок установки игры.

Например, у меня есть несколько игр в D:\mygames, поэтому мой libraryfolders.vdf:

"LibraryFolders"
{
    "TimeNextStatsReport"   "xxxxxxxxxxx"
    "ContentStatsID"        "xxxxxxxxxxx"
    "1"                     "D:\\mygames"
}

Если у вас есть эта альтернативная папка, проверьте наличие acm файлов, содержащихся в подпапке \steamapps.

person tezzo    schedule 04.12.2015
comment
ЗАБУДЬ ПРО ЭТО! Мне просто нужно было добавить \Steam в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Valve\ , и теперь он появляется. СПАСИБО МОЙ ДОРОГОЙ ГОСПОДИН! Не могли бы вы отредактировать свой ответ на это? И я отмечу это как ответ :) - person Thomsen1707; 04.12.2015
comment
ответ обновлен. извините, но у меня не установлен Steam, поэтому я не могу проверить ключ реестра, который я нашел в часто задаваемых вопросах Steam. - person tezzo; 04.12.2015
comment
Ничего страшного, мужик. Он прекрасно работает. Спасибо - person Thomsen1707; 04.12.2015
comment
Могу я спросить точную применимость этого ответа? Первоначальный вопрос был о папке с игрой, это относится к этой папке или к папке приложения? Может ли эта папка быть изменена пользователем? если да, обновляется ли эта запись реестра соответствующим образом? То есть: это точно надежный способ узнать папку с играми для Steam при наиболее вероятных условиях? Если это достаточно надежный ответ, весь вопрос может быть не совсем не по теме (+ полезен для кого-то еще). - person varocarbas; 04.12.2015
comment
@varocarbas Этого достаточно, чтобы я мог работать дальше. Он показывает, где находится Steam. В моем случае: C:\Program Files(x86)\Steam, а затем я добавляю \steamapps\common\*game*\gamedata, чтобы точно определить расположение папок с игрой. Хотя теперь у меня другая проблема. У меня есть еще одна папка Steam Games на моем ssd I:\ которая, нет, не обновляется. Но это определенно помогло мне понять, как это сделать, и теперь у меня есть еще одна цель, за которую я буду браться. - person Thomsen1707; 04.12.2015
comment
@ Thomsen1707 Рад читать, что все это помогло вам. Но я хотел уточнить точную применимость этого ответа на исходный вопрос, как найти папку с играми?, в основном для будущих читателей. Я думаю, что ваш последний комментарий достаточно ясен в этом отношении. - person varocarbas; 04.12.2015
comment
@varocarbas Да, в основном он указывает место, где изначально был установлен Steam. Мой был установлен на диск C:\ в папку Program Files(x86). Поэтому вместо жесткого кодирования C:\Program Files(x86)\Steam\steamapps\common\*game*\gamedata. Вы должны создать переменную с размещением в реестре, а затем использовать ее, чтобы показать путь конкретного пользователя к папке Steam. Например. Variable & "\steamapps\common\*game*\gamedata" - person Thomsen1707; 04.12.2015