| Left: | ||
| Right: | 
| OLD | NEW | 
|---|---|
| (Empty) | |
| 1 # | |
| 2 # NMAKE is a 32-bit application, which makes it problematic to make 64-bit regis try entries with the standard command-line tools such as "reg.exe". | |
| 
 
Wladimir Palant
2013/06/18 15:18:33
Quite frankly, I don't think that we want to use n
 
Wladimir Palant
2013/06/19 07:14:15
So far no contradictions - that's why you made it
 
Eric
2013/06/19 15:22:54
Probably. If we want to rewrite it later, I won't
 
Eric
2013/06/20 14:13:47
Well, I could. But it's going to make me really cr
 
 | |
| 3 # As a 32-bit application, when it loads "reg.exe" from the ordinary directory, %WINDIR%\System32, the WOW64 system redirects it load from %WINDIR%\SysWOW64. | |
| 4 # So even if you explicitly put in the 64-bit path, because NMAKE is 32-bit it w ill load the 32-bit version anyway. | |
| 5 # To get around this, we check for the existence of %WINDIR%\sysnative\reg.exe, which if present means a few things. | |
| 6 # -- 1. We're running on Windows Vista or later, because 64-bit XP doesn't have "sysnative." | |
| 7 # -- 2. We're running on a 64-bit version of Windows. | |
| 8 # -- 3. We're running from a 32-bit process, which should always be true about N MAKE. | |
| 9 # | |
| 10 # See http://ovidiupl.wordpress.com/2008/07/11/useful-wow64-file-system-trick/ f or more details. | |
| 11 # | |
| 12 !if [cmd /c if exist %WINDIR%\sysnative\reg.exe exit /b 1] | |
| 13 REG=$(WINDIR)\sysnative\reg.exe | |
| 14 CMD=$(WINDIR)\sysnative\cmd.exe | |
| 15 X64=1 | |
| 16 !else | |
| 17 REG=$(WINDIR)\reg.exe | |
| 18 !message Warning: Developer installation not tested on XP or 32-bit Windows. | |
| 19 !endif | |
| 20 | |
| 21 !message DLL=$(DLL) | |
| 22 !message DLL32=$(DLL32) | |
| 23 | |
| 24 # | |
| 25 # Default (first) target is a help message, in case anybody runs it outside Visu al Studio. | |
| 26 # | |
| 27 help: | |
| 28 @echo This Makefile is intended to be run from within Visual Studio to p rovide developer installations of Adblock Plus for IE. | |
| 29 | |
| 30 build: register64 copy | |
| 31 | |
| 32 clean: | |
| 33 | |
| 34 rebuild: clean build | |
| 35 | |
| 36 # | |
| 37 # We're using "reg.exe" for the HKCU keys because the one with the DLL path name would need to be backslash-quoted to go into a .REG file. | |
| 38 # We're using "regedit.exe" for the HKLM key because (by default) "reg.exe" does not trigger UAC to prompt the user for privilege elevation and will just fail i nstead. | |
| 39 # | |
| 40 # Note that the CLSID is register in HKCU, which avoids the need to elevate with UAC to high integrity in order to write. | |
| 41 # Also note that the "Browser Helper Object" key is in HKLM, which is required b ecause of IE. | |
| 42 # IE only scans in HKLM for BHO entries. | |
| 43 # IE does not scan HKCU for BHO entries, contrary to some sources online. | |
| 44 # The tale for this is that it would be a security violation to allow an Adminis trator to run a BHO from HKCU, | |
| 45 # since anything might have written to HKCU (a low-integrity part of the regi stry). | |
| 46 # On the other hand, IE could just run low-integrity BHO in a low-integrity cont ainer, but no, it can't do that. | |
| 47 # | |
| 48 | |
| 49 # add "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Ob jects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" /v NoExplorer /t REG_DWORD /d 1 /f >nul | |
| 50 | |
| 51 register64: | |
| 52 @echo Start 'register' action. | |
| 53 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664} /ve /d "Adblock Plus for IE Browser Helper Object" /f >nul | |
| 54 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /ve /d "$(DLL)" /f >nul | |
| 55 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /v ThreadingModel /d "Both" /f >nul | |
| 56 $(CMD) /c $(WINDIR)\regedit.exe /s <<temporary.reg | |
| 57 Windows Registry Editor Version 5.00 | |
| 58 | |
| 59 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser H elper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}] | |
| 60 @="Adblock Plus for IE" | |
| 61 "NoExplorer"=dword:1 | |
| 62 << | |
| 
 
Wladimir Palant
2013/06/19 07:14:15
Yes, reg.exe runs with the privileges that you run
 
Wladimir Palant
2013/06/20 07:10:38
In other words, you want to ask developers to run
 
 | |
| 63 copy temporary.reg temporary.txt | |
| 64 @date /t >"$(OutDir)registered.timestamp.txt" | |
| 65 @time /t >>"$(OutDir)registered.timestamp.txt" | |
| 66 | |
| 67 copy: | |
| 68 copy "$(ProjectDir)files\settings.ini" "$(OutDir)settings.ini" | |
| 69 xcopy /s /I /y /D "$(ProjectDir)html\*" "$(OutDir)html" | |
| 70 xcopy /s /I /y /D "$(ProjectDir)locales\*" "$(OutDir)locales" | |
| 71 @date /t >"$(OutDir)copied.timestamp.txt" | |
| 72 @time /t >>"$(OutDir)copied.timestamp.txt" | |
| OLD | NEW |