我正在尝试运行一个文件名中包含“update”的可执行文件,例如“
mycoolupdate
”,不带扩展名。
如果是普通的“
mycoolupdate.exe
”文件,Windows 7中的Windows资源管理器会根据文件名自动判断需要用户权限提升。
我以为这只是一个shell行为,不会影响“
CreateProcess
”WinAPI功能,特别是当文件名不包含.exe
扩展名时,但事实似乎并非如此。事实证明,同样的规则也适用于 WinAPI。
所以
GetLastError
返回
请求的操作需要提升
有没有办法告诉
CreateProcess
尽管文件名可疑,但我不需要提升用户权限?
从 Windows Vista 开始,正确编写的应用程序需要有应用程序清单。
作为开发人员,您需要提供此信息。
在这种情况下,您的清单表明您的应用程序是为 Windows Vista(或更高版本)正确编写的。否则,Windows 会假定您的应用程序未针对 Windows Vista 正确编写。
遭受 740 ELEVATION_REQIRED 我以惊人的方式获胜:使用 createprocess 启动 .bat 文件。详细信息:Windows10,AccessRuntime_x86_en-us.exe,从命令提示符运行或在资源管理器中双击,会产生 740 createprocess 错误。包含路径并使用 createprocess 启动的一行 inst.bat 解决了问题。