管理重复文件名的检测

时间:2010-08-07 20:16:11

标签: c# .net windows

我正在尝试检测其计算机上安装的用户Steam游戏,我希望能够为每个安装找到合适的.exe并通过该目录回溯以获得完整路径。

我意识到有几种不同的游戏对可执行文件(hl2.exe)使用相同的名称,但它们位于不同的文件夹中。

显然这意味着我不能只搜索特定的游戏.exe来获取所需的目录,因为它们是同一个名字,我想到的一个想法就是搜索每一个提到的“hl2.exe”。用户计算机并创建一个条目列表,理论上应该显示每个实例的路径。

在没有向您展示的情况下解释有点困难,但令人惊讶的是,在Windows 7中搜索“hl2.exe”时没有显示结果..

如果可能,我想将编程语言保留用于C#!

3 个答案:

答案 0 :(得分:3)

我不知道这是否万无一失,但这是一个想法。

如果您打开Regedit并导航到Computer\HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall(如果您有32位版本的Windows,请忽略该路径的Wow6432Node部分),您将找到一个“Steam App XXX “对于每个已安装的游戏,其中XXX是安装的游戏的Steam ID。

在每个内部,都有一个DisplayName,它为您提供游戏名称,以及路径的InstallLocation。

在我的机器上,我有以下内容:

Steam App 40100 - Supreme Commander 2
Steam App 41500 - Torchlight
Steam App 630   - Alien Swarm
Steam App 8980  - Borderlands

答案 1 :(得分:2)

如果您想按照Valve的方式进行操作,则需要使用代码来读取Steam的clientregistry.blob二进制数据文件。

在C#中存在一些浮动(主要来自人们试图盗版游戏的网站。)我为SDK工具项目做了Java version

这将提供有关用户“拥有”的游戏所需的信息,以及有关文件路径的一些数据。

答案 2 :(得分:0)

另一个角度是什么关于捎带Windows游戏文件夹? 据我所知,所有蒸汽游戏都会自动添加到Windows游戏文件夹中,您可以在重新设置下找到所有游戏及其启动可执行文件的列表

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX

如果你看下

c:\users\<username>\appdata\local\Microsoft\windows\game explorer 

您可能会找到有关用户统计信息的信息