 {
 	if (!checkSubSys || (checkSubSys && !Instr(exeStrOld, A_WinDir) && !Instr(PrgChoicePaths[selPrgChoice], A_WinDir)))
 	{
-		if (A_IsAdmin)
-		msgbox, 8192 , DcmpExecutable: File Open, % exeStrName " could not be accessed with error " A_LastError "."
-		else
-		{
-		retVal := TaskDialog("Decompile Executable", "Problem opening the Prg file", ,"While seeking information from the file headers, the Prg`n" . """" . exeStrName . """" . "`ncould not be accessed with error " . A_LastError . ".`nIs it opened by another process, or does it have special permissions?`nEven though it is possible for the Prg to be launched and monitored,`nthere may be other issues if PrgLnch is not run as elevated Admin.", "", "Restart PrgLnch as Admin", "Do not restart PrgLnch")
-			if (retVal == 1)
+	IniRead, fTemp, % PrgLnch.SelIniChoicePath, General, DcmpExecutableWrn
+		; Versioning: this code would want to be in IniProc
+		if (fTemp = "ERROR")
+		{
+		IniWrite, %A_Space%, % PrgLnch.SelIniChoicePath, General, DcmpExecutableWrn
+		fTemp := 0
+		}
+
+		if (!fTemp)
+		{
+			if (A_IsAdmin)
+			retVal := TaskDialog("Decompile Executable", "Problem opening the Prg file", ,"While seeking information from the file headers, the Prg`n" . """" . exeStrName . """" . "`ncould not be accessed with error " . A_LastError . ".`nIs it opened by another process, or is it located in a protected location?`nEven though it is possible for the Prg to be launched and monitored,`nthere may be other situations where PrgLnch is unable to use the Prg.", , "Continue")
+			else
+			retVal := TaskDialog("Decompile Executable", "Problem opening the Prg file", ,"While seeking information from the file headers, the Prg`n" . """" . exeStrName . """" . "`ncould not be accessed with error " . A_LastError . ".`nIs it opened by another process, or does it have special permissions?`nEven though it is possible for the Prg to be launched and monitored,`nthere may be other issues if PrgLnch is not run as elevated Admin.", "Do not show again (No restart as Admin)", "Do not restart PrgLnch", "Restart PrgLnch as Admin")
+
+			if (retVal < 0)
+			IniWrite, 1, % PrgLnch.SelIniChoicePath, General, DcmpExecutableWrn
+
+			if (retVal == 2)
 			RestartPrgLnch(1)
 		}
 	}

				if ((AllModes && scrHeightlast == scrHeight && scrFreqlast == scrFreq) || ((scrHeightlast != scrHeight || scrFreqlast != scrFreq)))
				{
				iModeCt += 1
				scrWidthlast := scrWidth
				scrHeightlast := scrHeight
				scrDPIlast := scrDPI

CheckModes:
; Update allModes
Gui, PrgLnchOpt: Submit, Nohide
CheckModesFunc(defPrgStrng, PresetPropHwnd, targMonitorNum, iDevNumArray, ResIndexList, ResArray, allModes)
Tooltip
return

CheckModesFunc(defPrgStrng, PresetPropHwnd, targMonitorNum, iDevNumArray, ByRef ResIndexList, ByRef ResArray, allModes)
{

ResIndexList := GetResList(targMonitorNum, ResArray, allModes, 1)

strTemp := substr(ResIndexList, 1, StrLen(ResIndexList) - 1)

