惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
爱范儿
爱范儿
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 叶小钗
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
博客园 - 司徒正美
博客园 - 【当耐特】
IT之家
IT之家

博客园 - bodong

Unreal Engine 5创建项目失败:文件“{ConfigFile}”处理失败。 Unreal Engine 5调试资源依赖来源的方法 GhostDoc Enterprise.v2024.2.24300 for Visual Studio 2022插件漏洞分析和离线解锁方法 ScyllaHide插件可能导致x64dbg的日志窗口无法捕获应用程序输出的日志字符串 C++使用宏来判断当前编译期支持的C++标准版本的方法 VisualStudio各版本_MSC_VER和_MSC_FULL_VER宏定义值列表 Rider如何针对一个项目禁用某一类错误检查(Inspections)的办法 UnrealEngine 5 C++标准版本 UnrealEngine Setup即使挂了代理也很慢的解决办法 CPPStringFormatting: 使用.NET格式化字符串风格格式化C++字符串的库 Windows平台下使用C++和Windows API计算文件MD5的方法 Windows平台下使用C++检测硬盘分区是否属于SSD硬盘的方法 将C++代码文件路径、行号、函数名称等打包到#pragma message输出的方法 KnownDLLs列表 Avalonia实现Visual Studio风格标题栏的方法 解决IDA Pro Warning:mssdk64_win7: No such file or directory AHeadLib.Net C#版本的DLL劫持代码生成工具 安装Visual Studio 2022指定版本的方法 UnrealSharp: 一个可以让你在UnrealEngine5中采用C# 12和.NET 8.0开发的插件
如何找到当前计算机所有的UnrealEngine安装位置
bodong · 2025-09-28 · via 博客园 - bodong

    使用UnrealEngine主要有两种方式:1.通过EpicGameLauncher安装 2. 通过源代码自行编译。

1. 通过EpicGameLauncher安装时,安装的版本和安装位置记录在注册表的这个位置:

  HKEY_LOCAL_MACHINE\SOFTWARE\EpicGames\Unreal Engine

    每个版本都会有一个子目录,对应版本的安装路径在这个子目录的InstalledDirectory属性中:

image

 2. 通过源代码安装

    如果你的项目是通过源代码编译的引擎来操作的,那么在uproject文件中会保存该引擎的guid,比如:

"FileVersion": 3,
"EngineAssociation": "{9453D6AB-4C8B-9CBE-4B26-8AA51A358E17}",
"Category": "Samples",

     这个就是源代码引擎的guid,可以通过这个guid找到源代码引擎所在位置。这些源代码引擎的注册表位置是:

HKEY_CURRENT_USER\Software\Epic Games\Unreal Engine\Builds

    这个Builds目录下的键值就是以这些GUID作为名词,如:

image

    注意键名词是有大括号的哈,查找用的python脚本:

import os
import sys
import json
import winreg
import argparse
import re

def find_ue_path(project_path):
    """
    查找 Unreal Engine 路径
    1. 从 .uproject 文件读取 EngineAssociation
    2. 如果是 GUID 格式,尝试从注册表查找
    3. 如果是版本号格式,尝试构造默认路径
    """
    if not project_path or not os.path.exists(project_path):
        return None
    
    try:
        with open(project_path, 'r') as f:
            project_data = json.load(f)
            engine_association = project_data.get("EngineAssociation")
            
            if not engine_association:
                return None
            
            # 检查是否是 GUID 格式(包含大括号)
            if isinstance(engine_association, str) and re.match(r"^\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\}$", engine_association):
                # 在注册表中查找 GUID
                for hive in [winreg.HKEY_CURRENT_USER, winreg.HKEY_LOCAL_MACHINE]:
                    try:
                        key_path = r"Software\Epic Games\Unreal Engine\Builds"
                        with winreg.OpenKey(hive, key_path) as key:
                            try:
                                path = winreg.QueryValueEx(key, engine_association)[0]
                                if os.path.exists(path):
                                    return path
                            except:
                                pass
                    except:
                        pass
            
            # 尝试作为版本号处理
            if isinstance(engine_association, str):
                # 尝试在注册表中查找版本号
                for hive in [winreg.HKEY_LOCAL_MACHINE]:
                    try:
                        key_path = r"SOFTWARE\EpicGames\Unreal Engine"
                        with winreg.OpenKey(hive, key_path) as key:
                            try:
                                # 打开版本号子键
                                with winreg.OpenKey(key, engine_association) as version_key:
                                    path = winreg.QueryValueEx(version_key, "InstalledDirectory")[0]
                                    if os.path.exists(path):
                                        return path
                            except:
                                pass
                    except:
                        pass
    except Exception as e:
        print(f"处理项目文件时出错: {e}", file=sys.stderr)
    
    return None

def main():
    parser = argparse.ArgumentParser(description='查找 Unreal Engine 路径')
    parser.add_argument('--project', help='.uproject 文件路径')
    args = parser.parse_args()
    
    ue_path = find_ue_path(args.project)
    
    if ue_path:
        print(ue_path)
        return 0
    else:
        print("找不到 Unreal Engine 路径", file=sys.stderr)
        return 1

if __name__ == "__main__":
    sys.exit(main())
bodong@BODONG-PC12 MINGW64 /g/TMTechDemos (master|SPARSE)
$ python ./find_ue_path.py --project ./TMTechDemos.uproject
I:/UnrealEngine-EpicGames

bodong@BODONG-PC12 MINGW64 /g/TMTechDemos (master|SPARSE)
$ python ./find_ue_path.py --project 'g:/UnrealProjects/TPSDemo/TPSDemo.uproject'
C:\Program Files\Epic Games\UE_5.4