Skip to content

Releases: timliudev/DynaRunFix

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 10:50
Immutable release. Only release title and notes can be modified.
2fff33f

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

7b3ef4f476113e048930e17287764bbc11165bcf0bd5b21cf0344d10d7641371  DynaRunFix-Setup.exe
92585ffde9ad77dc984bcb5b72b6dd56b823b5e2dd40693f0d9b868ea33af7f4  DynaRunFix-v1.8.0.zip

What's Changed

Full Changelog: v1.7.2...v1.8.0

v1.7.2

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:58
Immutable release. Only release title and notes can be modified.
0272a48

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

1c832e1e6af294bbe2e25cf780712d7897c05274dbe1ac5f2a51d00dbd964108  DynaRunFix-Setup.exe
ce95f52421fa968997f8fb0df05a77b7653cf5dfc154c6b72b2f8bb671f1422d  DynaRunFix-v1.7.2.zip

What's Changed

Full Changelog: v1.7.1...v1.7.2

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 10:33
Immutable release. Only release title and notes can be modified.
912e3d4

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

a5f36a158442ae6d93d3ac16fd8174f325ecbe6aba13b4b3bce5e7e695c60c92  DynaRunFix-Setup.exe
e2c8ba2cd6f86a24bccbe60c50b12020fb8250bae7ec3a0e4bf136436ed8900a  DynaRunFix-v1.7.1.zip

What's Changed

  • Docs: slim README into a landing page, move details to docs/MANUAL.md by @timliudev in #13
  • Single UAC prompt for a full install (v1.7.1) by @timliudev in #14
  • Release v1.7.1 by @timliudev in #15

Full Changelog: v1.7.0...v1.7.1

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 17:53
Immutable release. Only release title and notes can be modified.
74a6e03

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

19f02616450566b767f0cceda308075f9e7aac668927f303d6a5c8e481cf3ccf  DynaRunFix-Setup.exe
694e0427d61ebdab4211e928feab07d44c905a6ea21cb8a232d7ccdcf2ce1fdb  DynaRunFix-v1.7.0.zip

What's Changed

Full Changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 16:02
Immutable release. Only release title and notes can be modified.
ca32cea

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

29973352620c3ff8a1fa97205dcb54030b7046edaaaa98fb476a13d787655079  DynaRunFix-Setup.exe
106e12f63227341102a8d1089f7e5e0bd8e1275e81c31e0879d5e64e51e4f3ec  DynaRunFix-v1.6.0.zip

What's Changed

Full Changelog: v1.5.0...v1.6.0

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 20:30
Immutable release. Only release title and notes can be modified.
277f9c8

SHA-256 of the files in this release (also attached as SHA256SUMS.txt).
Build provenance: gh attestation verify --repo timliudev/DynaRunFix

2bc33bbd99244a00ace5715e61e1b393bcb945380bd69757b7b3f303f817ea45  DynaRunFix-Setup.exe
5daabca492d3486f0a12f58b926c03feb57faf9a1d1ec8f13e171ae16285e80b  DynaRunFix-v1.5.0.zip

v1.5.0 — 2026-10-16

Added:

  • Setup wizard installs the Dyna Pro USB driver (Windows 10/11). The main installer has a new option, Also install the Dyna Pro USB
    driver (one restart needed)
    (on by default; hidden when the driver is already installed or Windows is older than 10; /quiet never
    installs the driver). It downloads Dyna Pro's official Dyna Pro USB.zip from dynapro.co.uk (not bundled; its SHA-256 is checked and a
    changed file is refused), asks for administrator permission (once on an administrator account; a standard user may be asked again after
    the restart), suspends BitLocker only when protection is on (until the driver is installed; at most 3 restarts as a safety net, then
    it resumes by itself; it is also resumed when the installation ends or is cancelled, and a retry starts the count again), requests the
    advanced start-up menu for the next start and registers a task that continues the wizard after you sign in. The first driver page
    says that BitLocker is suspended. You press 7 in the menu; if you miss it the wizard says so and offers to try again. Then Windows' red
    warning appears, twice (once for each of the two driver files): choose "Install this driver software anyway" each time. Driver
    signature enforcement comes back at the next normal restart. The driver can also be installed later from the Start menu ("Install Dyna
    Pro USB driver") or with DynaRunFix-Setup.exe /driver; DynaRunFix-Setup.exe /driver-cancel takes back the task, the one-time boot
    option and the BitLocker suspension. Files go to %ProgramData%\DynaRunFix\driver, the log is %ProgramData%\DynaRunFix\driver.log;
    uninstalling DynaRunFix removes the Start menu shortcut, a pending task and that folder, and resumes BitLocker if DynaRunFix suspended it (even without a pending task), but not the installed driver. See
    docs/DRIVER.md. Not yet verified on a real PC; the BitLocker path has not been tried on real hardware.
  • A DynaRun of another folder no longer blocks the install; one that cannot be closed is said so. Only a DynaRun V3.exe that is the
    installed one (or whose path cannot be read, or while the installed DynaRun's path is not known yet) holds up the install. The wizard
    offers Close DynaRun and install only when everything in the way can be closed (same Windows session, path readable); for another
    user's DynaRun it explains that and offers no close button, and the page updates by itself once DynaRun is closed. /quiet /close does
    not try to close anything it cannot close and ends with exit code 6.
  • Exit code 6 is explained in a log: one line per program in the way (name, process id, session, whether it could be closed, path), in
    setup.log of the install folder, or in %TEMP%\DynaRunFix-setup.log before that folder exists or without administrator rights. Nothing is shown with /quiet.

Changed and fixed (after a review of v1.4.0):

  • Driver working folder: %ProgramData%\DynaRunFix is created fresh with write access for administrators only, and an old or in-use folder is never
    reused (driver.log is written only after the folder has been checked). If the folder cannot be prepared the wizard says so; restart Windows and try again (a retry after this error needs a restart).
  • Older Windows: the wizard and docs/DRIVER.md give manual steps for Windows 8 / 8.1, Vista / 7 and XP.
  • Driver documentation: the explanation of the INF and catalog files is reworded to what Windows reports.
  • USB watchdog log: the DPSetData watchdog on (usbfix) line now reports how many hooks were set (N hook(s) set).
  • Installer log: the line log (setup.log, %TEMP%\DynaRunFix-setup.log) is never written through a link: a symbolic link or a file with
    several hard links in its place is refused.
  • Fix: a DynaRun in a non-default folder. The launcher asked the registry for the DynaRun path the setup recorded with the size of
    its own path, so a longer recorded path (a custom install folder) made the read fail and the launcher fell back to the default
    location, ending in "Cannot start DynaRun". The path is now read in full; a value that is not text, is empty or does not fit is not used.
  • Update check: it follows redirects itself, as the downloads do: every hop (https, and one of GitHub's hosts) is checked before a
    request is sent to it. In v1.4.0 WinINet followed the redirects of the check by itself and only the address it ended up at was checked
    (no data was read from a host outside GitHub's); the duplicated host list is gone too.
  • Launcher: only a DynaRun of the same sign-in session counts as running (with fast user switching another user's DynaRun gave a wrong
    "administrator rights" message); when the elevation state of the desktop shell's token cannot be told it no longer carries on as if it
    were a normal start but stops with the message that no usable token was found.
  • First-time setup: the optional-feature values are not written when Dyna Pro's helper ends with a non-zero exit code (when the exit
    code cannot be read, it is as before). The README now says exactly when they are written: whenever DynaRun starts that helper
    (normally only on the first start), not "on the very first start only".
  • Opt-in DYNAFIX_USBFIX: the last error code of the abandoned or finished call is handed on (abandoned: ERROR_TIMEOUT); a wait on a
    handle whose kind cannot be told is no longer cut short (only events are); dynapro.dll is recognised by its file name, not by the end
    of the path (xdynapro.dll is not it), and a cut-off module path is not matched.
  • DYNAFIX_* switches: a value must be exactly the expected one (1, 0, a number, clip): 10, 1x or a long value no longer
    switch something on, and an over-long value is no longer read from an unset buffer.
  • System libraries: version.dll, rstrtmgr.dll and psapi.dll are loaded from the system folder only.
  • Installer: the copy of the setup made in %TEMP% for the elevated start from a network drive gets a unique name, is created new,
    and is held open (nobody can change it) and compared with the original until the elevated process has ended; uninstall does not
    delete the manifest next to DynaRun V3.exe, nor schedule it for deletion at the next restart, when DynaRun's folder or exe can be
    changed by ordinary users.
  • CI: the release build accepts only tags of the form vN.N.N, and the version is passed to the build quoted.
  • README / documentation: the MSVBVM60 screen-size scan is disclosed (it finds the values by an instruction-byte pattern in
    Microsoft's code, in memory only, changes them only if they equal the real screen size, and leaves them alone when the pattern is not
    found); "modifies no Dyna Pro or THB file" now says "no file's content" and names the manifest and the briefly changed modification
    time; the log does not contain module or import addresses (it can show window and GDI handle values); the graph resource load uses
    LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE and a request that would load code is not redirected; the compatibility
    setting Run as administrator is described as observed (a test on Windows 11: through the launcher the program ran non-elevated, without a
    prompt; started directly it asked for elevation); uninstall's taskbar policy scope (the user who uninstalls, the recorded account, every
    other account whose layout file is ours) and the full list of what DynaRunFix keeps in the registry and the install folder; the
    hardening tests are run, not only built. The driver wizard, the setup switches and exit codes, and what the driver option changes on
    the PC are described in the README.
  • Tests: new unit tests for the redirect target rules, the DYNAFIX_* parsing and the dynapro.dll name match, the launcher's
    registry path read (also a value of the wrong type or one that fills the buffer), its session rule and unknown token state, the order
    of release numbers, the system DLL loading, the BitLocker suspension decision and the installer's log writer.

v1.5.0 — 2026-10-16

新增:

  • 安裝精靈可安裝 Dyna Pro USB 驅動程式(Windows 10/11)。 主安裝程式新增一個選項「同時安裝 Dyna Pro USB 驅動程式(需重新開機一次)」(預設勾選;
    驅動程式已安裝或 Windows 低於 10 時隱藏;/quiet 不會安裝驅動程式):從 dynapro.co.uk 下載 Dyna Pro 官方的 Dyna Pro USB.zip(不內附;會檢查 SHA-256,
    檔案有變就拒絕安裝),要求系統管理員權限(使用系統管理員帳戶時只會問一次;標準使用者在重新啟動後可能會再被詢問),
    只有在 BitLocker 保護為開啟時才暫停它,直到驅動程式安裝完成(最多 3 次重新啟動作為保險,之後自動恢復;安裝結束或取消時也會恢復,重試時會重新計算次數),
    要求下次開機顯示進階啟動選單,並登錄一個工作,讓精靈在你登入後繼續。驅動程式的第一頁會說明 BitLocker 會被暫停。你在選單按 7;
    沒按到的話精靈會告知並提供「再試一次」。接著 Windows 會跳出紅色警告,而且會出現兩次(兩個驅動程式檔各一次),每次都請選「仍然安裝此驅動程式軟體」。
    驅動程式強制簽章在下次正常重新啟動後恢復。之後也可以從開始功能表(「安裝 Dyna Pro USB 驅動程式」)或用 DynaRunFix-Setup.exe /driver 啟動;
    DynaRunFix-Setup.exe /driver-cancel 會撤回工作、一次性開機選項與 BitLocker 暫停。檔案放在 %ProgramData%\DynaRunFix\driver,記錄檔是 %ProgramData%\DynaRunFix\driver.log;
    解除安裝 DynaRunFix 會移除開始功能表捷徑、尚未完成的工作與該資料夾,並在 BitLocker 是 DynaRunFix 暫停的情況下把它恢復(即使已沒有等待中的工作),但不會移除已安裝的驅動程式。見 docs/DRIVER.md。尚未在實體電腦上驗證;BitLocker 的流程尚未在真實硬體上試過。
  • 別的資料夾的 DynaRun 不再擋住安裝;關不掉的會明確說明。 只有已安裝的那個 DynaRun V3.exe(或讀不到路徑的,或已安裝的 DynaRun 路徑還不知道時)會擋住安裝。
    只有擋住的程式都能關閉(同一個登入工作階段、讀得到路徑)時,精靈才提供「關閉 DynaRun 並安裝」;別的使用者的 DynaRun 則顯示說明、
    不提供關閉按鈕,對方關閉後頁面會自動更新。/quiet /close 不會嘗試關閉關不掉的程式,直接以結束代碼 6 結束。
  • 結束代碼 6 會留下原因記錄: 每個擋住的程式一行(名稱、處理序編號、工作階段、能否關閉、路徑),寫在安裝資料夾的 setup.log,
    該資料夾尚未建立或沒有系統管理員權限時寫在 %TEMP%\DynaRunFix-setup.log。/quiet 不會顯示任何視窗。

變更與修正(v1.4.0 審查後):

  • 驅動程式工作資料夾: %ProgramData%\DynaRunFix 會全新建立,只有系統管理員可寫入;舊的或使用中的資料夾絕不重複使用(檢查過資料夾後才寫 `d...
Read more

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 20:55
Immutable release. Only release title and notes can be modified.
b235ae0

v1.4.0 — 2026-10-14

  • Uninstall: it runs from the installed program and no longer leaves DynaRunFix-uninstall-<n>.exe in %TEMP% (also not after a
    cancelled UAC prompt; copies of earlier builds are removed). Shortcuts that no backup covers (an older version did not record
    them) are pointed back at DynaRun V3.exe instead of staying on the removed launcher; backups made on 64-bit Windows with the
    long or the 8.3 spelling of a folder are restored too.

  • DynaRunFix never runs DynaRun with more rights than a normal start from the desktop. DynaRun does not need administrator
    rights. The launcher ignores the compatibility setting "Run as administrator" for DynaRun V3.exe; if the launcher itself is run
    as administrator, it first starts itself again with the desktop shell's token and ends, so DynaRun (and Locale Emulator) and the
    update check get what a double-click on the desktop gives: the normal, non-elevated token under UAC. If the shell's token is itself
    elevated (UAC off, built-in Administrator: the normal desktop is already full administrator), the launcher carries on with it and
    logs that; it refuses only when no shell token can be had at all, then showing a message and not starting DynaRun. A one-time
    notice (English / Traditional Chinese, can be switched off) is shown when the launcher was started as administrator and the token
    was non-elevated, or the compatibility setting was ignored. If an already running DynaRun was started with more rights than the
    launcher has, the launcher asks you to close it and start it again through DynaRunFix. Shortcuts the installer retargets no longer carry
    the "Run as administrator" flag. Do not run DynaRun V3.exe directly as administrator: it can stall at startup
    ("System Initializing. Please Wait. 115") and alter its per-user component registrations.

  • No more COM registrations in the machine-wide registry. The installer no longer copies DynaRun's per-user COM
    registrations to HKLM (it is not needed now that DynaRun runs without elevation). Copies and records made by older
    versions are left as they are, and uninstalling keeps them (com-copied.txt, com-backup).

  • Graph popup menu in the chosen language without administrator rights: the graph control (Gigasoft ProEssentials,
    Pesgo32e.ocx / PEGRP32E.dll) asks for its language resource PEGRC32D.dll by name; DynaRun's attempt to copy it into
    SysWOW64 fails without administrator rights, so the menu was English. dynafix.dll now answers that one request with the
    per-user copy from %APPDATA%\Dyna Pro Dynamometers\Dyna Run V3\Language\<language>\ (resource-only load, validated path,
    not when DynaRun is elevated); nothing is written to the system folder. DYNAFIX_PEGRC=0 switches it off.

  • Installer, code-page manifest: to make Windows read the manifest, the installer briefly changes the exe's modification
    time and restores it (the exe's content is not changed). The original time is recorded first and put back at the next run
    if that ever fails. The manifest is not added when DynaRun's folder or exe can be changed by ordinary users (setup.log
    in the install folder says so); then DynaRun's path is not recorded in the machine-wide registry either. On Windows XP links (junctions) in that path cannot be detected.

  • Security hardening:

    • The DynaRun setup (MSI) is copied to a folder that only administrators can write to and checked again there before it
      is run elevated.
    • Uninstall asks for administrator permission first; cancelling changes nothing. It deletes the manifest only if it is identical to
      the installer's own copy, keeps the record of the exe's original modification time if restoring it fails, and the elevated
      uninstall runs from the installed program in the install folder (no copy in %TEMP%). If DynaRun (or the launcher / Locale
      Emulator) is running, it asks to close it first, so no .old files or le folder are left behind; anything still
      locked is deleted at the next restart.
    • Updates: the check talks HTTPS only, and only to GitHub's hosts (every redirect is checked). The release and its SHA-256 are
      verified with GitHub again just before the install, and the downloaded installer is held open so it cannot be swapped between the
      check and the start. The question: Yes = install after DynaRun closes, No = skip this version, Cancel / the close button = ask again tomorrow.
    • DynaRunFix.exe /restart <pid> ends after 15 s instead of attaching to the old process.
    • Smaller items in the installer wizard (password wiped from memory, system libraries loaded by full path) and in
      tools/fetch-le.ps1 (SHA-256 for the licence files). Tests: tests\build-hardening-tests.cmd.
    • The taskbar pin technique for Windows 7 to 10 is credited to Gee Law (also used by Firefox); no Mozilla code is included.
  • DYNAFIX_USBFIX=1 (opt-in, EXPERIMENTAL, off by default, not yet verified with real hardware):
    tries to keep DynaRun's window from freezing for good when a DPSetData call into dynapro.dll does not return.

    • DPSetData (mode 3) runs on a dynafix.dll helper thread while the window thread waits with a watchdog; if the call is still
      blocked after about 2 s and DPConnStatus() reports the connection down, DPSetData returns 0 and DynaRun's own reconnect logic
      is expected to take over; while the connection is reported up the call is left to run. Facts about dynapro.dll's calls were taken
      from API-boundary logging of DynaRun's own calls; DynaRun's reaction to a 0 result is expected, not verified.
    • No Dyna Pro file on disk is modified. dynafix.dll calls dynapro.dll's exported DPSetData / DPConnStatus and,
      while DynaRun runs and only with the switch set, redirects dynapro.dll's WaitForSingleObject import-table entry in
      memory (helper thread only) and wraps DPSetData. Only mode 3 calls go through the watchdog (callers queue); other modes are passed
      straight to the original. The helper's event waits are made to time out (WAIT_TIMEOUT, event handles only) so that an abandoned call
      can end later; the three values passed in p are copied back on normal completion. Assumptions: dynapro.dll tolerates the call being made from a helper thread, and p holds three values (what was observed in DynaRun's calls).
    • Trade-offs, stated honestly: DynaRun's window is unresponsive for about 2 s before it recovers; other calls into dynapro.dll
      (DPConnStatus, DPConnect) overlap with it while an abandoned DPSetData is stuck, and how dynapro.dll copes with that is
      not verified; the abandoned call may never return, in which case all further DPSetData calls return 0 until DynaRun is
      restarted, and a one-time notice suggests restarting it (after 300 or more dropped calls and 20 s).
    • dynafix.log gets DPSetData watchdog on (usbfix), N WaitForSingleObject import(s) patched, usbfix: ... and the abandoned call returned after N ms lines.
  • Security and correctness fixes:

    • The launcher can no longer start DynaRun with more rights than a normal start (see the first item); the update check no longer runs elevated either.
    • Uninstall removes the current user's taskbar layout policy values as well, and keeps the recorded original
      modification time of DynaRun V3.exe when that restore is pending; restoring shortcuts no longer trusts per-user values when run
      elevated, paths read from other users' registry values are copied with bounds checks, and the elevated uninstall no longer
      runs from a predictable file in %TEMP%.
    • Downloads: HTTPS and the host are checked on every redirect hop (the update download may only be redirected to GitHub's own hosts), TLS 1.2 or later (Windows 7 needs KB3140245; the daily update check asks for TLS 1.2 as well), the size is capped at 300 MB, a download that ends early is not treated as complete.
      System libraries are loaded from the system folder only (System32).
    • A decrypted Dyna Pro Setup.msi is deleted from %TEMP%\DynaRunFix when the wizard is cancelled or fails.
    • First start: only option buttons that are clearly read as green (picked) are written; when dynafix.dll cannot read DynaRun's
      option buttons (or is unsure what it sees) it writes nothing and only logs it (before, it could write feature flags the user had not chosen).
    • dynafix.dll clears __COMPAT_LAYER for DynaRun's own process so a RunAsInvoker set by the launcher does not suppress
      the one-time UAC prompt of Dyna Pro's configuration helper; the graph language redirect is always a resource-only load and
      is refused if the elevation state cannot be determined.
    • dynafix.log no longer contains absolute addresses of other modules' import slots, only module and API names, and the launcher and the dll do not follow links (symbolic links, junctions) when opening it.
    • The manifest's version is 1.0.0.0; the installer's product version is 1.4.0.
  • Other: the screen-size adjustment is logged as screen-size values adjusted (work area): AxB -> CxD; the Locale
    Emulator notice (THIRD-PARTY.txt) also links to forks of its source code, and build.cmd regenerates it when it is
    stale; msgspy (the window-message logger) is no longer built or shipped (source stays in tools/msgspy);
    removed the manual machine-wide COM registration script and its playbook (no longer needed: DynaRun always runs non-elevated).

  • Installer, authenticity: the Dyna Pro download must stay on HTTPS and on dynapro.co.uk (checked on every redirect hop), uses TLS 1.2 or
    later (Windows 7 needs KB3140245), is capped at 300 MB and aborts on any certificate error, with a clear message. The license page shows the setup's full path, size, SHA-256 and the MSI's
    version / manufacturer for you to compare (display only). Releases now include SHA256SUMS.txt and a build provenance
    attestatio...

Read more