Fallout 76 will not start microsoft store dual triple display fix and microsoft store fix

Post Reply
darknkreepy3#
Site Admin
Posts: 247
Joined: Tue Oct 27, 2009 9:33 pm

Fallout 76 will not start microsoft store dual triple display fix and microsoft store fix

Post by darknkreepy3# »

So fallout 76 is a lot of fun, but really doesn't look better on my pc vs my xbox one series x game station. It even is a bit slower than my 2080ti 11gb or 306012gb gpu with max settings so I don't play it much on pc. I tried to start it today 05-06-2023 and found that it would start the game, go into the store for free merch and then as I went into the game I decided to play on my larger monitor in a multi-monitor setup 1-2-3. The game crashed.

I thought it was some infection, dism or sfc /scannow thing. It wasn't. I thought it was HDR or NON-HDR, maybe 60hz limit or not? Nope. It was in full screen mode which I changed in 04-20-2023 to see less stuttering. But when I had two displays on, it went to my far left monitor, and when I turned that off with Monitor Profile Switcher, a great app that can have multiple setups change quickly... that crashed it.

I uninstalled and reinstalled my xbox app, live app, xbox gamebar. Nothing. Cleared the temp files...
*DO NOT DO THIS!* changed the microsoft apps folder to EVERYONE and still nothing. crash. crash. crash.
*how to fix the windows app folder if you mess it up*
get PSTools here:
https://learn.microsoft.com/en-us/sysin ... ds/pstools

or on my server here:
http://www.supercala.net/phpBB3/_files/PSTools.zip
then use this amazing script by AgentRev I have a copy on my server or on their github either way
http://www.supercala.net/phpBB3/_files/ ... fukker.ps1

https://github.com/AgentRev/WindowsAppsUnfukker
=============================================
WindowsAppsUnfukker.ps1
just in case that github disappears of you can't access it. here it is, name it as above, and put it in your PSTools folder
Mine is like this
c:\progs\PSTools\WindowsAppsUnfukker.ps1

1. open a CMD as ADMINISTRATOR prompt (right click when you find CMD in START in windows)
2. cd c.. till you get to c:\ then cd c:\progs\PSTools\
3. run it...
psexec.exe -s -i powershell -ExecutionPolicy Bypass -File "c:\progs\PSTools\WindowsAppsUnfukker.ps1"

Code: Select all

#
# WindowsAppsUnfukker v1.1
# by AgentRev
#
# This shitstain code needs to run on the SYSTEM account via PsExec. Get it here:
# https://docs.microsoft.com/en-us/sysinternals/downloads/pstools
#
# How to start the motherfukker:
# 1. Download PsTools from the link above and extract it a folder.
# 2. Open CMD as admin, then access that folder: cd "PSTOOLS_PATH_HERE"
# 3. Execute the script: psexec.exe -s -i powershell -ExecutionPolicy Bypass -File "FULL_PATH_HERE\WindowsAppsUnfukker.ps1"
#
# Ajust the bitch-ass variables below as needed.
# You can include secondary drives as well. For example: @("C:\Program Files\WindowsApps", "D:\WindowsApps")
#
# If you want to restore a backup, you must first open PowerShell with: psexec.exe -s -i powershell
# Then, for example: icacls "C:\Program Files" /restore "C:\Program Files\WindowsApps_20211109_221014.txt" /c /q 2>$null
#

$WinAppsPaths = @("C:\Program Files\WindowsApps")
$BackupExistingPerms = 1  # set to 1 to grab a backup before the unfukking

####################################################################################################

Write-Host
Write-Host "Welcome to the amazing WindowsApps Unfukker! Please sit tight!!" -ForegroundColor Green

$WinVer = [Environment]::OSVersion.Version

if (-not ($WinVer.Major -eq 10 -and $WinVer.Build -lt 22000))
{
	Write-Host
	Write-Warning "This script has only been tested on Windows 10. Cuntinue at your own risk!!" -WarningAction Inquire
}

if ([Security.Principal.WindowsIdentity]::GetCurrent().User.Value -ne 'S-1-5-18')
{
	Write-Host
	Write-Host "Error: Not running as SYSTEM user!! Please start this script via PsExec." -ForegroundColor Red
	Write-Host
	pause
	exit 1
}

$WinAppsPaths = $WinAppsPaths | ForEach-Object { [Environment]::ExpandEnvironmentVariables($_).TrimEnd('\') }

foreach ($WinAppsPath in $WinAppsPaths)
{
	if (-not ((Test-Path $WinAppsPath -PathType Container) -and $((Get-Item $WinAppsPath -Force).Name -eq 'WindowsApps')))
	{
		Write-Host
		Write-Host 'Error: Folder does not exist or is not named "WindowsApps" you big dummy!!' -ForegroundColor Red
		Write-Host
		pause
		exit 1
	}
}

if ($BackupExistingPerms)
{
	Write-Host
	Write-Host "Backup of existing permissions..." -ForegroundColor Cyan

	$Timestamp = Get-Date -Format 'yyyyMMdd_HHmmss'

	foreach ($WinAppsPath in $WinAppsPaths)
	{
		$BackupPath = Join-Path (Resolve-Path "$WinAppsPath\..").Path "WindowsApps_$Timestamp.txt"
		icacls $WinAppsPath /save $BackupPath /t /c /q 2>$null  # mutes junction errors
		Write-Host "Saved to $BackupPath"
	}
}

[Regex]$FirstParenthesis = '\('

foreach ($WinAppsPath in $WinAppsPaths)
{
	Write-Host
	Write-Host "Fixing WindowsApps permissions..." -ForegroundColor Cyan

	# Default ownership and permissions, courtesy of https://www.winhelponline.com/blog/windowsapps-folder-restore-default-permissions/
	$WinAppsDefaultPerms = 'O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:SYD:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;OICIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1200a9;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;OICIIO;GXGR;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;CI;0x1200a9;;;BA)(A;OICI;0x1200a9;;;LS)(A;OICI;0x1200a9;;;NS)(A;OICI;0x1200a9;;;RC)(XA;;0x1200a9;;;BU;(Exists WIN://SYSAPPID))'

	$WinAppsACL = Get-Acl $WinAppsPath
	$WinAppsACL.SetSecurityDescriptorSddlForm($WinAppsDefaultPerms)

	# Grant ALL APPLICATION PACKAGES "Read & execute" for this folder, subfolders and files
	$GroupID = New-Object Security.Principal.SecurityIdentifier('S-1-15-2-1')
	$NewRule = New-Object Security.AccessControl.FileSystemAccessRule($GroupID, 'ReadAndExecute', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
	$WinAppsACL.AddAccessRule($NewRule)

	# Grant Users "Read & execute" for subfolders and files only
	$GroupID = New-Object Security.Principal.SecurityIdentifier('S-1-5-32-545')
	$NewRule = New-Object Security.AccessControl.FileSystemAccessRule($GroupID, 'ReadAndExecute', 'ObjectInherit,ContainerInherit', 'InheritOnly', 'Allow')
	$WinAppsACL.AddAccessRule($NewRule)

	# Grant Administrators "Full control" for this folder, subfolders and files
	$GroupID = New-Object Security.Principal.SecurityIdentifier('S-1-5-32-544')
	$NewRule = New-Object Security.AccessControl.FileSystemAccessRule($GroupID, 'FullControl', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
	$WinAppsACL.AddAccessRule($NewRule)

	# Apply all of the above
	Set-Acl $WinAppsPath $WinAppsACL

	$DeepFixInheritance = 0

	# Checks if you disabled inheritance on the entire folder tree like dumbass me
	if (-not $DeepFixInheritance)
	{
		$AppxFolders = Get-ChildItem $WinAppsPath -Filter 'AppxMetadata' -Depth 1 -Directory -Force -Attributes !ReparsePoint  # ignores junctions

		# if inheritance is disabled
		if (($AppxFolders | Where-Object { (Get-Acl $_.FullName).AreAccessRulesProtected }).Count -gt 0)
		{
			$DeepFixInheritance = 1
		}
	}

	Write-Host

	if ($DeepFixInheritance)
	{
		Write-Host "Fixing WindowsApps folder tree inheritance, this could take a couple minutes..." -ForegroundColor Cyan
		icacls "$WinAppsPath\*" /inheritance:e /t /c /q 2>$null
	}
	else
	{
		Write-Host "Fixing WindowsApps subfolders inheritance..." -ForegroundColor Cyan
		icacls "$WinAppsPath\*" /inheritance:e /c /q 2>$null
	}

	Write-Host
	Write-Host "Fixing WindowsApps subfolders permissions..." -ForegroundColor Cyan

	# Get all app folder containers (they have no underscore in their name)
	$AppsFolders = Get-ChildItem $WinAppsPath -Exclude *_* -Directory -Force -Attributes !ReparsePoint
	$AppsFolders = @($WinAppsPath) + ($AppsFolders | ForEach-Object { $_.FullName })

	foreach ($AppsFolder in $AppsFolders)
	{
		# Get all app folders
		$AppFolders = Get-ChildItem $AppsFolder -Directory -Force -Attributes !ReparsePoint

		# Now, time to smear the bullshit
		foreach ($AppFolder in $AppFolders)
		{
			if ($AppFolder.Name -Match '(.+?_).*?_.*?_.*?_(\w+$|\w{1,13})')
			{
				$AppFolderPath = $AppFolder.FullName
				$AppFolderACL = Get-Acl $AppFolderPath

				# Grant Users "Read & execute" for this folder, subfolders and files with Microsoft's bullshit condition
				$MsBullshit = '(XA;OICI;0x1200a9;;;BU;(WIN://SYSAPPID Contains "{0}{1}"))' -f $Matches.1, $Matches.2

				if ($AppFolderACL.Sddl -NotMatch ([Regex]::Escape($MsBullshit)))
				{
					Write-Host "Fixing $AppFolderPath"
					$AppFolderSDDL = $FirstParenthesis.Replace($AppFolderACL.Sddl, "$MsBullshit(", 1)
					$AppFolderACL.SetSecurityDescriptorSddlForm($AppFolderSDDL)
					Set-Acl $AppFolderPath $AppFolderACL
				}
			}
		}
	}

	$WpSystem = Join-Path $WinAppsPath "..\WpSystem"

	# Fix WpSystem if it exists alongside WindowsApps (only present on secondary drives)
	if (Test-Path $WpSystem -PathType Container)
	{
		Write-Host
		Write-Host "Fixing WpSystem permissions..." -ForegroundColor Cyan

		# Grant ALL APPLICATION PACKAGES "Full control" for subfolders and files only
		icacls $WpSystem /grant "*S-1-15-2-1:(OI)(CI)(IO)(F)" /q

		# Grant Users "List folder contents" for this folder only
		icacls $WpSystem /grant "*S-1-5-32-545:(RX)" /q

		# Grant Administrators "Full control" for this folder, subfolders and files
		icacls $WpSystem /grant "*S-1-5-32-544:(OI)(CI)(F)" /q
	}
}

# Since we are on SYSTEM user, we cannot use environment variables to find AppData...
$Username = (Get-WMIObject Win32_ComputerSystem).UserName.Split('\')[-1]
$AppDataPackages = "C:\Users\$Username\AppData\Local\Packages"

Write-Host

if (Test-Path $AppDataPackages -PathType Container)
{
	Write-Host "Fixing AppData Packages permissions, this could take a couple minutes..." -ForegroundColor Cyan

	# Enable folder tree inheritance
	icacls $AppDataPackages /inheritance:e /t /c /q

	# Grant ALL APPLICATION PACKAGES "Full control" for this folder, subfolders and files
	icacls $AppDataPackages /grant "*S-1-15-2-1:(OI)(CI)(F)"
}
else
{
	Write-Warning "AppData Packages not found, please file a GitHub issue here:
https://github.com/AgentRev/WindowsAppsUnfukker/issues
Copy-paste this in the description: $AppDataPackages"
}

Write-Host
Write-Host "Unfukking finished!! (hopefully)"  -ForegroundColor Green
Write-Host
pause
=============================================

I turned on my second monitor and ran the game.
I then in full screen mode went to SETTINGS
then I chose DISPLAY and the drop down for MONITOR
now I can choose my primary monitor to play the game on.

I hope this helps someone else.
=============================================

So I did this overall... below is just notes of things that really didn't fix the windows store full screen bug when I turned of a monitor etc

I went here
C:\Users\neo\Documents\My Games\Fallout 76\
and edited these things to bFull Screen=0 and bBorderless=1 to see my game without it crashing again


Project76.ini

[Display]
bDynamicObjectQueryManager = 1
bMultiThreadedAccumulation = 1
bMultiThreadedRenderingUNP = 1
fDecalLOD0 = 8192
fSAOBias = 0.6
fSunUpdateThreshold = 0.5f
iSize W = 1920
iSize H = 1080
bFull Screen = 0
bBorderless = 1


Project76Prefs.ini
[Display]
iMaxAnisotropy=16
fShadowDistance=150000.0000
fDirShadowDistance=150000.0000
iShadowMapResolution=2048
uiShadowFilter=3
uiOrthoShadowFilter=3
fBlendSplitDirShadow=48.0000
iMaxFocusShadows=4
iMaxDecalsPerFrame=100
iMaxSkinDecalsPerFrame=25
bVolumetricLightingEnable=1
bSAOEnable=1
uWaterShadowFilter=3
iVolumetricLightingTextureQuality=2
iSize H=2160
iSize W=3840
iLocation X=0
iLocation Y=0
bFull Screen=0
bBorderless=1

=============================================

Here's what happened. I had to clean my computer setup and I have 2 GPU cards. I feed my monitors 1-[2-main]-3 as such

2080ti 11gb [2-main]
3060 12gb [1 & 3]

3060-2080ti-3060

So something in the monitor switcher or windows itself, even fallout 76 thinks my #1 monitor is another monitor. Looks like something in Fallout 76 is bugged because it is clear that my cables are exactly in the same place, but changing the monitor count while it is running with the desktop app bugged it out. I now went to windowed display in the settings and after restarting the game... works so far. going back to fullscreen might work... (strange I have to run task manager and force quit fallout76 though)...

I found this solution...

When using the Windows Display Properties "Identify" button to show the position of displays, the numbers shown on the screens are different to the actual layout.

This issue is not specific to DisplayLink and is an underlying bug with Windows. There is a thread on the Microsoft forum about this issue here: Windows 7 IT Pro > Windows 7 User Interface > Changing monitor identities?

It may be possible to work around this by forcing Windows to re-detect monitors:
How to force Windows to Rediscover Monitors

Whenever Windows sees a new monitor it adds it to the end of the current configuration. However, this doesn't change the current configuration.To force Windows to configure monitors properly if the numbers aren't correct, you need to delete these two registry keys, and then add the monitors one at a time.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Configuration
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Connectivity

For your convenience we have already created a reg file that you can download and run.
https://synaptics.com/products/displayl ... ence-reset

Monitor_Persistence.reg

Code: Select all

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Connectivity]


Alternatively, copy the text below into a text file and call it Monitor Persistence.reg, save it, then run it to remove these entries:

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Connectivity]
Post Reply