找回密码
 加入
搜索
查看: 258|回复: 6

如何让exe以兼容模式启动?

[复制链接]
发表于 2024-11-13 16:35:57 | 显示全部楼层 |阅读模式


像这样,以兼容模式运行,里面选择windows8,同时以管理员权限运行。

我想让autit编译的exe自己按这个模式启动,或让它用run命令启动的应用程序按这个模式运行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2024-11-13 16:46:16 | 显示全部楼层
研究方向:信息存在注册表
发表于 2024-11-14 20:16:49 | 显示全部楼层


; 设置 Total Commander 的路径
Local $exePath = "C:\Program Files\Total Commander\TOTALCMD64.EXE"

; 使用 cmd 和 PowerShell 以管理员权限运行 Total Commander
Local $cmd = 'powershell -Command "Start-Process \'' & $exePath & '\' -Verb RunAs"'

; 使用 ShellExecute 来运行命令
ShellExecute("cmd.exe", "/c " & $cmd, "", "runas")



                        没测试过,你自己测试下.



发表于 2024-11-15 17:26:57 | 显示全部楼层
发表于 2024-11-15 21:59:56 | 显示全部楼层
### 说明:
$programPath:请将其替换为您要设置的程序的完整路径。
$compatibilityMode:可以根据需要更改为其他兼容模式(例如 `WIN7`、`WIN8`)。
RegRead 和 RegWrite:用于读取和写入注册表值。
MsgBox:用于显示消息框,告知用户操作结果。
; 设置要修改的程序路径
Local $programPath = "C:\Program Files\YourApp\YourApp.exe"
; 设置兼容模式
Local $compatibilityMode = "WINXPSP3" ; 可以更改为其他兼容模式,如 WIN7, WIN8 等
; 定义注册表路径
Local $regPath = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
; 检查注册表项是否存在
If Not RegRead($regPath, $programPath) Then
    ; 创建注册表项并设置兼容模式
    RegWrite($regPath, $programPath, "REG_SZ", $compatibilityMode)
    MsgBox(0, "成功", "已将程序设置为兼容模式: " & $compatibilityMode)
Else
    MsgBox(0, "信息", "该程序已存在兼容模式设置。")
EndIf
发表于 2024-11-16 13:05:56 | 显示全部楼层
表面的是注册表只是最终设置后的结果!更高深的是兼容性界面是通过运行哪个库文件及其参数使之立即生效。
况且注册表修改后也不知道需不需要重启。
发表于 2024-11-17 19:34:31 | 显示全部楼层
给你顶一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 00:25 , Processed in 0.163993 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表