【发布时间】:2016-03-09 11:58:44
【问题描述】:
如何在不进行硬编码的情况下访问 Steam 游戏文件夹?
除了在我的代码中硬编码C:\Steam\steamapps\common\<game_folder>\GameData 之外,我可以使用涉及游戏的steamappid 的东西来自动获取此信息吗?
【问题讨论】:
如何在不进行硬编码的情况下访问 Steam 游戏文件夹?
除了在我的代码中硬编码C:\Steam\steamapps\common\<game_folder>\GameData 之外,我可以使用涉及游戏的steamappid 的东西来自动获取此信息吗?
【问题讨论】:
要获得 Steam 游戏文件夹,您必须按照以下步骤操作:
acf 文件和 libraryfolders.vdf
您可以在 Windows 注册表中找到 Steam InstallPath:
HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Valve\Steam
您可以使用此代码read a Value from a Registry Key:
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 的那个),您就可以从 \steamapps 子文件夹中包含的 appmanifest_<steamappid>.acf 文件中读取游戏安装文件夹。
例如,appmanifest_2280.acf 包含有关 Ultimate Doom 的信息。
您可以搜索特定的steamappid 或分析每个文件并从name 键获取游戏名称。
还要检查 \steamapps 子文件夹中的 libraryfolders.vdf 以获取其他游戏安装文件夹。
例如我在D:\mygames 有一些游戏,所以我的libraryfolders.vdf 是:
"LibraryFolders"
{
"TimeNextStatsReport" "xxxxxxxxxxx"
"ContentStatsID" "xxxxxxxxxxx"
"1" "D:\\mygames"
}
一旦您有了这个备用文件夹,请检查 acm 子文件夹中包含的 acm 文件。
【讨论】:
C:\Program Files(x86)\Steam 然后我添加\steamapps\common\*game*\gamedata 以查明游戏文件夹的位置。虽然现在我遇到了另一个问题。我的ssd I:\ 上有另一个steam 游戏文件夹,不,它不会更新。但这绝对帮助我理解了如何去做,现在我有了另一个目标,我将继续努力。