### Godot version

v4.1.rc2.official [46424488e]

### System information

Godot v4.1.rc2 - Windows 10.0.19045 - Vulkan (Compatibility) - GeForce GTX 550 Ti () - Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz (4 Threads)

### Issue description

In the Project Manager.
With a project that has a comma in the name, for example: `one, two`

When the open project folder button is pressed, then two issues can occur:
- If there is no other project with the name before the comma: `one`
Then the default Godot project folder opens: `C:/Users/username/Documents`
- If there is another project with the name: `one`
Then the `one` project folder opens.
(the project `one` doesn't need to be listed in the Project Manager, 
it just has to exist in the same folder as the `one, two` folder)

Expected:
The `one, two` project folder should open.

Notes:
The open project folder button works when there isn't a comma in the project name.
For example: `three`, or `three four`

### Steps to reproduce

- Download the attached zip file: [two projects.zip](https://github.com/godotengine/godot/files/11929652/two.projects.zip)
- Extract the zip file into an empty folder.
- Open the Godot Project Manager.
- Scan the extracted folder.
There should now be two projects with the names: `one` and `one, two`.
- Click on the `one, two` projects, open project button, to the left of the project path.

### Observed

The project `one` folder opens.

### Expected

The project `one, two` folder should have opened.

### Continued reproduction steps
- Now remove the `one` folder from the extracted folder.
It doesn't matter that it's still listed in the Project manager.
- Click on the `one, two` projects, open project button.

### Observed 2

Now the default Godot project folder opens: `C:/Users/username/Documents`

### Expected 2

Same as above, the `one, two` project folder should have opened.

### Minimal reproduction project

[two projects.zip](https://github.com/godotengine/godot/files/11929652/two.projects.zip)

if (p_text_position < 1 || p_text_position >= (UINT32)string.length()) {
			*r_text_string = nullptr;
			*r_text_length = 0;
			return S_OK;
		}
		*r_text_string = reinterpret_cast<const wchar_t *>(string.get_data());
		*r_text_length = p_text_position;
		return S_OK;
	}
	DWRITE_READING_DIRECTION STDMETHODCALLTYPE GetParagraphReadingDirection() override {
		return (rtl) ? DWRITE_READING_DIRECTION_RIGHT_TO_LEFT : DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
	}
	HRESULT STDMETHODCALLTYPE GetLocaleName(UINT32 p_text_position, UINT32 *r_text_length, WCHAR const **r_locale_name) override {
		*r_locale_name = reinterpret_cast<const wchar_t *>(locale.get_data());
		return S_OK;
	}
	HRESULT STDMETHODCALLTYPE GetNumberSubstitution(UINT32 p_text_position, UINT32 *r_text_length, IDWriteNumberSubstitution **r_number_substitution) override {
		*r_number_substitution = n_sub;
		return S_OK;
	}
	FallbackTextAnalysisSource(const Char16String &p_text, const Char16String &p_locale, bool p_rtl, IDWriteNumberSubstitution *p_nsub) {