mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[misc] further Windows 7 specifics removals
* Also remove some unused code in stdlg.c * Note that virtdisk appears to be a vulnerable library, so we go through delay loading yet again...
This commit is contained in:
parent
0bda98f0ed
commit
0df68b6af9
13 changed files with 46 additions and 237 deletions
|
@ -19,7 +19,7 @@ TARGET := $(word 1,$(subst -, ,$(TUPLE)))
|
||||||
DEF_SUFFIX := $(if $(TARGET:x86_64=),.def,.def64)
|
DEF_SUFFIX := $(if $(TARGET:x86_64=),.def,.def64)
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: dwmapi-delaylib.lib wintrust-delaylib.lib
|
all: dwmapi-delaylib.lib virtdisk-delaylib.lib wintrust-delaylib.lib
|
||||||
|
|
||||||
%.def64: %.def
|
%.def64: %.def
|
||||||
$(AM_V_SED) "s/@.*//" $< >$@
|
$(AM_V_SED) "s/@.*//" $< >$@
|
||||||
|
@ -29,4 +29,3 @@ all: dwmapi-delaylib.lib wintrust-delaylib.lib
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -rf *.lib
|
$(RM) -rf *.lib
|
||||||
|
|
|
@ -367,7 +367,7 @@ uninstall-am:
|
||||||
|
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: dwmapi-delaylib.lib wintrust-delaylib.lib
|
all: dwmapi-delaylib.lib virtdisk-delaylib.lib wintrust-delaylib.lib
|
||||||
|
|
||||||
%.def64: %.def
|
%.def64: %.def
|
||||||
$(AM_V_SED) "s/@.*//" $< >$@
|
$(AM_V_SED) "s/@.*//" $< >$@
|
||||||
|
|
5
.mingw/virtdisk.def
Normal file
5
.mingw/virtdisk.def
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
EXPORTS
|
||||||
|
AttachVirtualDisk@24
|
||||||
|
GetVirtualDiskPhysicalPath@12
|
||||||
|
DetachVirtualDisk@12
|
||||||
|
OpenVirtualDisk@24
|
|
@ -133,12 +133,12 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -162,12 +162,12 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -193,12 +193,12 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -229,12 +229,12 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -260,13 +260,13 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -292,13 +292,13 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
||||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -326,13 +326,13 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
||||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
@ -363,13 +363,13 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
|
|
@ -2,7 +2,7 @@ SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller sys
|
||||||
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
||||||
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
|
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
|
||||||
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
||||||
VULNERABLE_LIBS = -ldwmapi-delaylib -lwintrust-delaylib
|
VULNERABLE_LIBS = -ldwmapi-delaylib -lvirtdisk-delaylib -lwintrust-delaylib
|
||||||
|
|
||||||
noinst_PROGRAMS = rufus
|
noinst_PROGRAMS = rufus
|
||||||
|
|
||||||
|
|
|
@ -276,7 +276,7 @@ SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller sys
|
||||||
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
||||||
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
|
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
|
||||||
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
||||||
VULNERABLE_LIBS = -ldwmapi-delaylib -lwintrust-delaylib
|
VULNERABLE_LIBS = -ldwmapi-delaylib -lvirtdisk-delaylib -lwintrust-delaylib
|
||||||
AM_V_WINDRES_0 = @echo " RC $@";$(WINDRES)
|
AM_V_WINDRES_0 = @echo " RC $@";$(WINDRES)
|
||||||
AM_V_WINDRES_1 = $(WINDRES)
|
AM_V_WINDRES_1 = $(WINDRES)
|
||||||
AM_V_WINDRES_ = $(AM_V_WINDRES_$(AM_DEFAULT_VERBOSITY))
|
AM_V_WINDRES_ = $(AM_V_WINDRES_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
|
22
src/iso.c
22
src/iso.c
|
@ -1698,14 +1698,6 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtDisk API Prototypes - Only available for Windows 8 or later
|
|
||||||
PF_TYPE_DECL(WINAPI, DWORD, OpenVirtualDisk, (PVIRTUAL_STORAGE_TYPE, PCWSTR,
|
|
||||||
VIRTUAL_DISK_ACCESS_MASK, OPEN_VIRTUAL_DISK_FLAG, POPEN_VIRTUAL_DISK_PARAMETERS, PHANDLE));
|
|
||||||
PF_TYPE_DECL(WINAPI, DWORD, AttachVirtualDisk, (HANDLE, PSECURITY_DESCRIPTOR,
|
|
||||||
ATTACH_VIRTUAL_DISK_FLAG, ULONG, PATTACH_VIRTUAL_DISK_PARAMETERS, LPOVERLAPPED));
|
|
||||||
PF_TYPE_DECL(WINAPI, DWORD, DetachVirtualDisk, (HANDLE, DETACH_VIRTUAL_DISK_FLAG, ULONG));
|
|
||||||
PF_TYPE_DECL(WINAPI, DWORD, GetVirtualDiskPhysicalPath, (HANDLE, PULONG, PWSTR));
|
|
||||||
|
|
||||||
static char physical_path[128] = "";
|
static char physical_path[128] = "";
|
||||||
static HANDLE mounted_handle = INVALID_HANDLE_VALUE;
|
static HANDLE mounted_handle = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
|
@ -1719,14 +1711,10 @@ char* MountISO(const char* path)
|
||||||
wconvert(path);
|
wconvert(path);
|
||||||
char* ret = NULL;
|
char* ret = NULL;
|
||||||
|
|
||||||
PF_INIT_OR_OUT(OpenVirtualDisk, VirtDisk);
|
|
||||||
PF_INIT_OR_OUT(AttachVirtualDisk, VirtDisk);
|
|
||||||
PF_INIT_OR_OUT(GetVirtualDiskPhysicalPath, VirtDisk);
|
|
||||||
|
|
||||||
if ((mounted_handle != NULL) && (mounted_handle != INVALID_HANDLE_VALUE))
|
if ((mounted_handle != NULL) && (mounted_handle != INVALID_HANDLE_VALUE))
|
||||||
UnMountISO();
|
UnMountISO();
|
||||||
|
|
||||||
r = pfOpenVirtualDisk(&vtype, wpath, VIRTUAL_DISK_ACCESS_READ | VIRTUAL_DISK_ACCESS_GET_INFO,
|
r = OpenVirtualDisk(&vtype, wpath, VIRTUAL_DISK_ACCESS_READ | VIRTUAL_DISK_ACCESS_GET_INFO,
|
||||||
OPEN_VIRTUAL_DISK_FLAG_NONE, NULL, &mounted_handle);
|
OPEN_VIRTUAL_DISK_FLAG_NONE, NULL, &mounted_handle);
|
||||||
if (r != ERROR_SUCCESS) {
|
if (r != ERROR_SUCCESS) {
|
||||||
SetLastError(r);
|
SetLastError(r);
|
||||||
|
@ -1735,7 +1723,7 @@ char* MountISO(const char* path)
|
||||||
}
|
}
|
||||||
|
|
||||||
vparams.Version = ATTACH_VIRTUAL_DISK_VERSION_1;
|
vparams.Version = ATTACH_VIRTUAL_DISK_VERSION_1;
|
||||||
r = pfAttachVirtualDisk(mounted_handle, NULL, ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY |
|
r = AttachVirtualDisk(mounted_handle, NULL, ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY |
|
||||||
ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER, 0, &vparams, NULL);
|
ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER, 0, &vparams, NULL);
|
||||||
if (r != ERROR_SUCCESS) {
|
if (r != ERROR_SUCCESS) {
|
||||||
SetLastError(r);
|
SetLastError(r);
|
||||||
|
@ -1743,7 +1731,7 @@ char* MountISO(const char* path)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = pfGetVirtualDiskPhysicalPath(mounted_handle, &size, wtmp);
|
r = GetVirtualDiskPhysicalPath(mounted_handle, &size, wtmp);
|
||||||
if (r != ERROR_SUCCESS) {
|
if (r != ERROR_SUCCESS) {
|
||||||
SetLastError(r);
|
SetLastError(r);
|
||||||
uprintf("Could not obtain physical path for mounted ISO '%s': %s", path, WindowsErrorString());
|
uprintf("Could not obtain physical path for mounted ISO '%s': %s", path, WindowsErrorString());
|
||||||
|
@ -1761,12 +1749,10 @@ out:
|
||||||
|
|
||||||
void UnMountISO(void)
|
void UnMountISO(void)
|
||||||
{
|
{
|
||||||
PF_INIT_OR_OUT(DetachVirtualDisk, VirtDisk);
|
|
||||||
|
|
||||||
if ((mounted_handle == NULL) || (mounted_handle == INVALID_HANDLE_VALUE))
|
if ((mounted_handle == NULL) || (mounted_handle == INVALID_HANDLE_VALUE))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
pfDetachVirtualDisk(mounted_handle, DETACH_VIRTUAL_DISK_FLAG_NONE, 0);
|
DetachVirtualDisk(mounted_handle, DETACH_VIRTUAL_DISK_FLAG_NONE, 0);
|
||||||
safe_closehandle(mounted_handle);
|
safe_closehandle(mounted_handle);
|
||||||
out:
|
out:
|
||||||
physical_path[0] = 0;
|
physical_path[0] = 0;
|
||||||
|
|
10
src/rufus.c
10
src/rufus.c
|
@ -3337,7 +3337,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||||
char *tmp, *locale_name = NULL, **argv = NULL;
|
char *tmp, *locale_name = NULL, **argv = NULL;
|
||||||
wchar_t **wenv, **wargv;
|
wchar_t **wenv, **wargv;
|
||||||
PF_TYPE_DECL(CDECL, int, __wgetmainargs, (int*, wchar_t***, wchar_t***, int, int*));
|
PF_TYPE_DECL(CDECL, int, __wgetmainargs, (int*, wchar_t***, wchar_t***, int, int*));
|
||||||
PF_TYPE_DECL(WINAPI, BOOL, SetDefaultDllDirectories, (DWORD));
|
|
||||||
HANDLE mutex = NULL, hogmutex = NULL, hFile = NULL;
|
HANDLE mutex = NULL, hogmutex = NULL, hFile = NULL;
|
||||||
HWND hDlg = NULL;
|
HWND hDlg = NULL;
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
|
@ -3366,14 +3365,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||||
// 'somelib.dll;%(DelayLoadDLLs)' must be added to the 'Delay Loaded Dlls' option of
|
// 'somelib.dll;%(DelayLoadDLLs)' must be added to the 'Delay Loaded Dlls' option of
|
||||||
// the linker properties in Visual Studio (which means this won't work with MinGW).
|
// the linker properties in Visual Studio (which means this won't work with MinGW).
|
||||||
// For all other DLLs, use SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32).
|
// For all other DLLs, use SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32).
|
||||||
// Finally, we need to perform the whole gymkhana below, where we can't call on
|
SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32);
|
||||||
// SetDefaultDllDirectories() directly, because Windows 7 doesn't have the API exposed.
|
|
||||||
// Also, no, Coverity, we never need to care about freeing kernel32 as a library.
|
|
||||||
// coverity[leaked_storage]
|
|
||||||
pfSetDefaultDllDirectories = (SetDefaultDllDirectories_t)
|
|
||||||
GetProcAddress(LoadLibraryW(L"kernel32.dll"), "SetDefaultDllDirectories");
|
|
||||||
if (pfSetDefaultDllDirectories != NULL)
|
|
||||||
pfSetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32);
|
|
||||||
|
|
||||||
uprintf("*** " APPLICATION_NAME " init ***\n");
|
uprintf("*** " APPLICATION_NAME " init ***\n");
|
||||||
its_a_me_mario = GetUserNameA((char*)(uintptr_t)&u, &size) && (u == 7104878);
|
its_a_me_mario = GetUserNameA((char*)(uintptr_t)&u, &size) && (u == 7104878);
|
||||||
|
|
|
@ -540,6 +540,7 @@ typedef struct {
|
||||||
DWORD Major;
|
DWORD Major;
|
||||||
DWORD Minor;
|
DWORD Minor;
|
||||||
DWORD BuildNumber;
|
DWORD BuildNumber;
|
||||||
|
DWORD Ubr;
|
||||||
DWORD Edition;
|
DWORD Edition;
|
||||||
USHORT Arch;
|
USHORT Arch;
|
||||||
char VersionStr[128];
|
char VersionStr[128];
|
||||||
|
@ -774,11 +775,6 @@ static __inline HMODULE GetLibraryHandle(char* szLibraryName) {
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
h = LoadLibraryExW(wszLibraryName, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
|
h = LoadLibraryExW(wszLibraryName, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
|
||||||
// Some Windows 7 platforms (most likely the ones missing KB2533623 per the
|
|
||||||
// official LoadLibraryEx doc) can return ERROR_INVALID_PARAMETER when using
|
|
||||||
// the Ex() version. If that's the case, fallback to using LoadLibraryW().
|
|
||||||
if ((h == NULL) && (SCODE_CODE(GetLastError()) == ERROR_INVALID_PARAMETER))
|
|
||||||
h = LoadLibraryW(wszLibraryName);
|
|
||||||
if (h != NULL)
|
if (h != NULL)
|
||||||
OpenedLibrariesHandle[OpenedLibrariesHandleSize++] = h;
|
OpenedLibrariesHandle[OpenedLibrariesHandleSize++] = h;
|
||||||
else
|
else
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 4.0.2036"
|
CAPTION "Rufus 4.0.2037"
|
||||||
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
||||||
|
@ -392,8 +392,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 4,0,2036,0
|
FILEVERSION 4,0,2037,0
|
||||||
PRODUCTVERSION 4,0,2036,0
|
PRODUCTVERSION 4,0,2037,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -411,13 +411,13 @@ BEGIN
|
||||||
VALUE "Comments", "https://rufus.ie"
|
VALUE "Comments", "https://rufus.ie"
|
||||||
VALUE "CompanyName", "Akeo Consulting"
|
VALUE "CompanyName", "Akeo Consulting"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "4.0.2036"
|
VALUE "FileVersion", "4.0.2037"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2023 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2023 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
||||||
VALUE "OriginalFilename", "rufus-4.0.exe"
|
VALUE "OriginalFilename", "rufus-4.0.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "4.0.2036"
|
VALUE "ProductVersion", "4.0.2037"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
18
src/stdfn.c
18
src/stdfn.c
|
@ -441,17 +441,15 @@ void GetWindowsVersion(windows_version_t* windows_version)
|
||||||
|
|
||||||
windows_version->Edition = (int)dwProductType;
|
windows_version->Edition = (int)dwProductType;
|
||||||
|
|
||||||
// Add the build number (including UBR if available) for Windows 8.0 and later
|
// Add the build number (including UBR if available)
|
||||||
windows_version->BuildNumber = vi.dwBuildNumber;
|
windows_version->BuildNumber = vi.dwBuildNumber;
|
||||||
if (windows_version->Version >= WINDOWS_8) {
|
windows_version->Ubr = ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\Windows NT\\CurrentVersion\\UBR");
|
||||||
int nUbr = ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\Windows NT\\CurrentVersion\\UBR");
|
vptr = &windows_version->VersionStr[safe_strlen(windows_version->VersionStr)];
|
||||||
vptr = &windows_version->VersionStr[safe_strlen(windows_version->VersionStr)];
|
vlen = sizeof(windows_version->VersionStr) - safe_strlen(windows_version->VersionStr) - 1;
|
||||||
vlen = sizeof(windows_version->VersionStr) - safe_strlen(windows_version->VersionStr) - 1;
|
if (windows_version->Ubr != 0)
|
||||||
if (nUbr > 0)
|
safe_sprintf(vptr, vlen, " (Build %lu.%lu)", windows_version->BuildNumber, windows_version->Ubr);
|
||||||
safe_sprintf(vptr, vlen, " (Build %lu.%d)", windows_version->BuildNumber, nUbr);
|
else
|
||||||
else
|
safe_sprintf(vptr, vlen, " (Build %lu)", windows_version->BuildNumber);
|
||||||
safe_sprintf(vptr, vlen, " (Build %lu)", windows_version->BuildNumber);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
164
src/stdlg.c
164
src/stdlg.c
|
@ -52,8 +52,7 @@ static char* szMessageText = NULL;
|
||||||
static char* szMessageTitle = NULL;
|
static char* szMessageTitle = NULL;
|
||||||
static char **szDialogItem;
|
static char **szDialogItem;
|
||||||
static int nDialogItems;
|
static int nDialogItems;
|
||||||
static HWND hBrowseEdit, hUpdatesDlg;
|
static HWND hUpdatesDlg;
|
||||||
static WNDPROC pOrgBrowseWndproc;
|
|
||||||
static const SETTEXTEX friggin_microsoft_unicode_amateurs = { ST_DEFAULT, CP_UTF8 };
|
static const SETTEXTEX friggin_microsoft_unicode_amateurs = { ST_DEFAULT, CP_UTF8 };
|
||||||
static BOOL notification_is_question;
|
static BOOL notification_is_question;
|
||||||
static const notification_info* notification_more_info;
|
static const notification_info* notification_more_info;
|
||||||
|
@ -84,160 +83,6 @@ void SetDialogFocus(HWND hDlg, HWND hCtrl)
|
||||||
SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)hCtrl, TRUE);
|
SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)hCtrl, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* We need a sub-callback to read the content of the edit box on exit and update
|
|
||||||
* our path, else if what the user typed does match the selection, it is discarded.
|
|
||||||
* Talk about a convoluted way of producing an intuitive folder selection dialog
|
|
||||||
*/
|
|
||||||
INT CALLBACK BrowseDlgCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch(message) {
|
|
||||||
case WM_DESTROY:
|
|
||||||
GetWindowTextU(hBrowseEdit, szFolderPath, sizeof(szFolderPath));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return (INT)CallWindowProc(pOrgBrowseWndproc, hDlg, message, wParam, lParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Main BrowseInfo callback to set the initial directory and populate the edit control
|
|
||||||
*/
|
|
||||||
INT CALLBACK BrowseInfoCallback(HWND hDlg, UINT message, LPARAM lParam, LPARAM pData)
|
|
||||||
{
|
|
||||||
char dir[MAX_PATH];
|
|
||||||
wchar_t* wpath;
|
|
||||||
LPITEMIDLIST pidl;
|
|
||||||
|
|
||||||
switch(message) {
|
|
||||||
case BFFM_INITIALIZED:
|
|
||||||
pOrgBrowseWndproc = (WNDPROC)SetWindowLongPtr(hDlg, GWLP_WNDPROC, (LONG_PTR)BrowseDlgCallback);
|
|
||||||
// Windows hides the full path in the edit box by default, which is bull.
|
|
||||||
// Get a handle to the edit control to fix that
|
|
||||||
hBrowseEdit = FindWindowExA(hDlg, NULL, "Edit", NULL);
|
|
||||||
SetWindowTextU(hBrowseEdit, szFolderPath);
|
|
||||||
SetDialogFocus(hDlg, hBrowseEdit);
|
|
||||||
// On Windows 7, MinGW only properly selects the specified folder when using a pidl
|
|
||||||
wpath = utf8_to_wchar(szFolderPath);
|
|
||||||
pidl = SHSimpleIDListFromPath(wpath);
|
|
||||||
safe_free(wpath);
|
|
||||||
// NB: see http://connect.microsoft.com/VisualStudio/feedback/details/518103/bffm-setselection-does-not-work-with-shbrowseforfolder-on-windows-7
|
|
||||||
// for details as to why we send BFFM_SETSELECTION twice.
|
|
||||||
SendMessageW(hDlg, BFFM_SETSELECTION, (WPARAM)FALSE, (LPARAM)pidl);
|
|
||||||
Sleep(100);
|
|
||||||
PostMessageW(hDlg, BFFM_SETSELECTION, (WPARAM)FALSE, (LPARAM)pidl);
|
|
||||||
break;
|
|
||||||
case BFFM_SELCHANGED:
|
|
||||||
// Update the status
|
|
||||||
if (SHGetPathFromIDListU((LPITEMIDLIST)lParam, dir)) {
|
|
||||||
SendMessageLU(hDlg, BFFM_SETSTATUSTEXT, 0, dir);
|
|
||||||
SetWindowTextU(hBrowseEdit, dir);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Browse for a folder and update the folder edit box
|
|
||||||
*/
|
|
||||||
void BrowseForFolder(void) {
|
|
||||||
|
|
||||||
BROWSEINFOW bi;
|
|
||||||
LPITEMIDLIST pidl;
|
|
||||||
WCHAR *wpath;
|
|
||||||
size_t i;
|
|
||||||
HRESULT hr;
|
|
||||||
IShellItem *psi = NULL;
|
|
||||||
IShellItem *si_path = NULL; // Automatically freed
|
|
||||||
IFileOpenDialog *pfod = NULL;
|
|
||||||
WCHAR *fname;
|
|
||||||
char* tmp_path = NULL;
|
|
||||||
|
|
||||||
dialog_showing++;
|
|
||||||
hr = CoCreateInstance(&CLSID_FileOpenDialog, NULL, CLSCTX_INPROC,
|
|
||||||
&IID_IFileOpenDialog, (LPVOID)&pfod);
|
|
||||||
if (FAILED(hr) || pfod == NULL) {
|
|
||||||
uprintf("CoCreateInstance for FileOpenDialog failed: error %X\n", hr);
|
|
||||||
if (pfod != NULL) {
|
|
||||||
IFileOpenDialog_Release(pfod);
|
|
||||||
pfod = NULL; // Just in case
|
|
||||||
}
|
|
||||||
goto fallback;
|
|
||||||
}
|
|
||||||
hr = IFileOpenDialog_SetOptions(pfod, FOS_PICKFOLDERS);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
uprintf("Failed to set folder option for FileOpenDialog: error %X\n", hr);
|
|
||||||
goto fallback;
|
|
||||||
}
|
|
||||||
// Set the initial folder (if the path is invalid, will simply use last)
|
|
||||||
wpath = utf8_to_wchar(szFolderPath);
|
|
||||||
// The new IFileOpenDialog makes us split the path
|
|
||||||
fname = NULL;
|
|
||||||
if ((wpath != NULL) && (wcslen(wpath) >= 1)) {
|
|
||||||
for (i = wcslen(wpath) - 1; i != 0; i--) {
|
|
||||||
if (wpath[i] == L'\\') {
|
|
||||||
wpath[i] = 0;
|
|
||||||
fname = &wpath[i + 1];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = SHCreateItemFromParsingName(wpath, NULL, &IID_IShellItem, (LPVOID)&si_path);
|
|
||||||
if (SUCCEEDED(hr) && pfod != NULL) {
|
|
||||||
if (wpath != NULL) {
|
|
||||||
IFileOpenDialog_SetFolder(pfod, si_path);
|
|
||||||
}
|
|
||||||
if (fname != NULL) {
|
|
||||||
IFileOpenDialog_SetFileName(pfod, fname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
safe_free(wpath);
|
|
||||||
|
|
||||||
hr = IFileOpenDialog_Show(pfod, hMainDialog);
|
|
||||||
if (SUCCEEDED(hr) && pfod != NULL) {
|
|
||||||
hr = IFileOpenDialog_GetResult(pfod, &psi);
|
|
||||||
if (SUCCEEDED(hr)) {
|
|
||||||
IShellItem_GetDisplayName(psi, SIGDN_FILESYSPATH, &wpath);
|
|
||||||
tmp_path = wchar_to_utf8(wpath);
|
|
||||||
CoTaskMemFree(wpath);
|
|
||||||
if (tmp_path == NULL) {
|
|
||||||
uprintf("Could not convert path\n");
|
|
||||||
} else {
|
|
||||||
static_strcpy(szFolderPath, tmp_path);
|
|
||||||
safe_free(tmp_path);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uprintf("Failed to set folder option for FileOpenDialog: error %X\n", hr);
|
|
||||||
}
|
|
||||||
} else if ((hr & 0xFFFF) != ERROR_CANCELLED) {
|
|
||||||
// If it's not a user cancel, assume the dialog didn't show and fallback
|
|
||||||
uprintf("Could not show FileOpenDialog: error %X\n", hr);
|
|
||||||
goto fallback;
|
|
||||||
}
|
|
||||||
IFileOpenDialog_Release(pfod);
|
|
||||||
dialog_showing--;
|
|
||||||
return;
|
|
||||||
fallback:
|
|
||||||
if (pfod != NULL) {
|
|
||||||
IFileOpenDialog_Release(pfod);
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(&bi, 0, sizeof(BROWSEINFOW));
|
|
||||||
bi.hwndOwner = hMainDialog;
|
|
||||||
bi.lpszTitle = utf8_to_wchar(lmprintf(MSG_106));
|
|
||||||
bi.lpfn = BrowseInfoCallback;
|
|
||||||
// BIF_NONEWFOLDERBUTTON = 0x00000200 is unknown on MinGW
|
|
||||||
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS |
|
|
||||||
BIF_DONTGOBELOWDOMAIN | BIF_EDITBOX | 0x00000200;
|
|
||||||
pidl = SHBrowseForFolderW(&bi);
|
|
||||||
if (pidl != NULL) {
|
|
||||||
CoTaskMemFree(pidl);
|
|
||||||
}
|
|
||||||
safe_free(bi.lpszTitle);
|
|
||||||
dialog_showing--;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the UTF8 path of a file selected through a load or save dialog
|
* Return the UTF8 path of a file selected through a load or save dialog
|
||||||
* All string parameters are UTF-8
|
* All string parameters are UTF-8
|
||||||
|
@ -1626,7 +1471,6 @@ void SetFidoCheck(void)
|
||||||
// - Powershell being installed
|
// - Powershell being installed
|
||||||
// - Rufus running in AppStore mode or update check being enabled
|
// - Rufus running in AppStore mode or update check being enabled
|
||||||
// - URL for the script being reachable
|
// - URL for the script being reachable
|
||||||
// - Windows version being Windows 8.0 or later
|
|
||||||
if ((ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\PowerShell\\1\\Install") <= 0) &&
|
if ((ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\PowerShell\\1\\Install") <= 0) &&
|
||||||
(ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\PowerShell\\3\\Install") <= 0)) {
|
(ReadRegistryKey32(REGKEY_HKLM, "Software\\Microsoft\\PowerShell\\3\\Install") <= 0)) {
|
||||||
ubprintf("Notice: The ISO download feature has been deactivated because "
|
ubprintf("Notice: The ISO download feature has been deactivated because "
|
||||||
|
@ -1640,12 +1484,6 @@ void SetFidoCheck(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WindowsVersion.Version < WINDOWS_8) {
|
|
||||||
ubprintf("Notice: The ISO download feature has been deactivated because "
|
|
||||||
"your version of Windows is too old.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CreateThread(NULL, 0, CheckForFidoThread, NULL, 0, NULL);
|
CreateThread(NULL, 0, CheckForFidoThread, NULL, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
7
src/ui.c
7
src/ui.c
|
@ -1053,7 +1053,7 @@ void CreateAdditionalControls(HWND hDlg)
|
||||||
hDll = GetLibraryHandle("ComDlg32");
|
hDll = GetLibraryHandle("ComDlg32");
|
||||||
hIconDown = (HICON)LoadImage(hDll, MAKEINTRESOURCE(577), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
hIconDown = (HICON)LoadImage(hDll, MAKEINTRESOURCE(577), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
||||||
hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(578), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(578), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
||||||
// Fallback to using Shell32 if we can't locate the icons we want in ComDlg32
|
// Fallback to using Shell32 if we can't locate the icons we want in ComDlg32 (Windows 8)
|
||||||
hDll = GetLibraryHandle("Shell32");
|
hDll = GetLibraryHandle("Shell32");
|
||||||
if (hIconUp == NULL)
|
if (hIconUp == NULL)
|
||||||
hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16749), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16749), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED);
|
||||||
|
@ -1082,9 +1082,6 @@ void CreateAdditionalControls(HWND hDlg)
|
||||||
GetWindowRect(GetDlgItem(hDlg, IDC_ADVANCED_DRIVE_PROPERTIES), &rc);
|
GetWindowRect(GetDlgItem(hDlg, IDC_ADVANCED_DRIVE_PROPERTIES), &rc);
|
||||||
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
|
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
|
||||||
SendMessage(hAdvancedDeviceToolbar, TB_GETIDEALSIZE, (WPARAM)FALSE, (LPARAM)&sz);
|
SendMessage(hAdvancedDeviceToolbar, TB_GETIDEALSIZE, (WPARAM)FALSE, (LPARAM)&sz);
|
||||||
// Yeah, so, like, TB_GETIDEALSIZE totally super doesn't work on Windows 7, for low zoom factor and when compiled with MSVC...
|
|
||||||
if (sz.cx < 16)
|
|
||||||
sz.cx = fw;
|
|
||||||
SetWindowPos(hAdvancedDeviceToolbar, hTargetSystem, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0);
|
SetWindowPos(hAdvancedDeviceToolbar, hTargetSystem, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0);
|
||||||
SetAccessibleName(hAdvancedDeviceToolbar, lmprintf(MSG_119));
|
SetAccessibleName(hAdvancedDeviceToolbar, lmprintf(MSG_119));
|
||||||
|
|
||||||
|
@ -1104,8 +1101,6 @@ void CreateAdditionalControls(HWND hDlg)
|
||||||
GetWindowRect(GetDlgItem(hDlg, IDC_ADVANCED_FORMAT_OPTIONS), &rc);
|
GetWindowRect(GetDlgItem(hDlg, IDC_ADVANCED_FORMAT_OPTIONS), &rc);
|
||||||
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
|
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
|
||||||
SendMessage(hAdvancedFormatToolbar, TB_GETIDEALSIZE, (WPARAM)FALSE, (LPARAM)&sz);
|
SendMessage(hAdvancedFormatToolbar, TB_GETIDEALSIZE, (WPARAM)FALSE, (LPARAM)&sz);
|
||||||
if (sz.cx < 16)
|
|
||||||
sz.cx = fw;
|
|
||||||
SetWindowPos(hAdvancedFormatToolbar, hClusterSize, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0);
|
SetWindowPos(hAdvancedFormatToolbar, hClusterSize, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0);
|
||||||
SetAccessibleName(hAdvancedFormatToolbar, lmprintf(MSG_120));
|
SetAccessibleName(hAdvancedFormatToolbar, lmprintf(MSG_120));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue