Это исключительный код, который делает то, что вы хотите, из инструмента, который вы хотите посмотреть: winetricks:
w_override_dlls()
{
w_skip_windows w_override_dlls && return
_W_mode=$1
case $_W_mode in
*=*)
w_die "w_override_dlls: unknown mode $_W_mode.
Usage: 'w_override_dlls mode[,mode] dll ...'." ;;
disabled)
_W_mode="" ;;
esac
shift
echo Using $_W_mode override for following DLLs: $@
cat > "$W_TMP"/override-dll.reg <<_EOF_
REGEDIT4
[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
_EOF_
while test "$1" != ""
do
case "$1" in
comctl32)
rm -rf "$W_WINDIR_UNIX"/winsxs/manifests/x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
;;
esac
if [ "$_W_mode" = default ]
then
# To delete a registry key, give an unquoted dash as value
echo "\"*$1\"=-" >> "$W_TMP"/override-dll.reg
else
# Note: if you want to override even DLLs loaded with an absolute
# path, you need to add an asterisk:
echo "\"*$1\"=\"$_W_mode\"" >> "$W_TMP"/override-dll.reg
#echo "\"$1\"=\"$_W_mode\"" >> "$W_TMP"/override-dll.reg
fi
shift
done
w_try_regedit "$W_TMP_WIN"\\override-dll.reg
unset _W_mode
}
Эта функция bash сначала создает файл override-dll.reg
во временном каталоге, а затем пытается импортировать его в выбранный префикс с помощью regedit
. Вы можете указать переопределения, такие как:
w_override_dlls native,builtin comctl32
Другая полезная функция устанавливает переопределение для конкретного приложения, например:
w_override_app_dlls winecfg.exe builtin comctl32
Что вы можете сделать, это написать свой собственный сценарий bash, используя его как источник вдохновения, или расширить собственные функциональные возможности winetricks (google для записи метаданных глагола winetricks) для ваших случаев использования, или просто использовать функции winetricks в качестве библиотеки.