我正在为c#中的统一游戏开发修补程序。因为游戏是使用不支持system.diagnostics.Process
的il2cpp构建的,所以我不得不通过Windows API启动修补程序。
我的问题是,修补程序始终以低完整性级别运行,该级别仅允许访问appdata/locallow
目录。
我仔细检查了整体游戏的所有部分始终以中等级别运行,但是子进程始终降为低端。
我尝试了CreateProcessA和ShellExecuteA API调用,并结合了我可以想到的有效参数的每种合理组合。结果保持不变。尽管父母显然具有中等正直度,但是孩子总是以较低的正直度结束。
我什至尝试了一些old code,它使用来自另一个进程的安全令牌来获得中等完整性。它成功启动了我的程序,但再次失败了。
如果通过click或从vs本身启动程序,则会得到中等完整性,但是当从cmd调用它时,在cmd / PowerShell在中等介质上运行时,我会得到同样低的完整性。
使用icacls设置完整性级别也没有什么不同。
修补程序只是一个简单的.net 4 Windows窗体应用程序(用于防止旧酒等问题),可与文件增量配合使用。
我在这里显然缺少什么。有人知道为什么是这样吗?很难找到任何东西,因为所有结果都涉及uac管理员提升或如何降低其完整性。
我通常试图了解msdn的完整性和权限,但这是一个无底洞,坦白说对我来说太复杂了。
我自己总是可以要求UAC管理员提升权限,顺便说一句。但这不是应该的工作方式。
仅运行继承父级完整性级别的程序真的有那么难吗?到目前为止,我发现这应该是默认行为。
答案 0 :(得分:1)
您是否将文件放入LocalLow? Windows使用低完整性IIRC启动该文件夹中的应用程序。