当前位置:  开发笔记 > 编程语言 > 正文

在vb.net中以不同用户身份运行新进程

如何解决《在vb.net中以不同用户身份运行新进程》经验,为你挑选了0个好方法。

我目前正在使用一种自行开发的方法在Vista中以不同的用户身份运行一个进程,我无法摆脱那种黑客攻击并且不太理想的感觉(除了它摧毁了UAC,崩溃了我的事实)有安全例外的应用程序,并强制我完全禁用UAC).我的进程包含两个项目(所以两个EXE文件) - 一个"接口"和一个"启动存根" - 这里是过程:

    用户有一个启动"Interface.exe notepad.exe"的快捷方式

    Interface.exe有一个表单,要求他们使用他们想要的凭据

    Interace.exe使用ProcessStartInfo以新用户身份创建LaunchStub.exe(LS)的实例

    LS使用ProcessStartInfo(ShellExecute设置为true)来启动所请求的文件,并且因为它已经作为请求的用户运行,所以新进程也是如此.

我有一个两步过程的原因是我希望用户能够右键单击操作系统具有(.EXE,.SQL,.MSC等)默认操作的任何文件并启动它,并且仅限ProcessStartInfo支持启用"UseShellExecute",但该开关阻止我使用新凭据,所以我一次只能做一个.

这会导致一些问题 - 首先,用户必须已经存在于计算机上,这意味着他们必须先在本地登录.如果该用户没有本地配置文件,则所请求的应用程序有时会启动,但我得到注册表和配置文件例外,因为应用程序期望存在尚未存在的事物(如注册表中的HKCU配置单元,用户不会因为他们从未登录过.

我知道我应该能够将我的应用程序的权限"提升"给他们请求的用户,启动我的新进程,然后撤消提升,但我无法找到一个好的代码示例,并且我不确定它是否允许以完全不同的用户身份运行.这一切都有意义吗?我不禁觉得有更好的方法来做到这一点.


更新:我刚尝试了一些我在网上发现的模拟代码,但无济于事.当与ProcessStartInfo一起使用时,它似乎仍然使用我当前的登录启动进程,而不是我提供的进程,即使我已使用提供的凭据激活模拟.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有