|
|
1
36
Shrike的答案的问题是,它不能与通过RDP连接的用户一起工作。
https://github.com/murrayju/CreateProcessAsUser 您所需要的一切都用静态方法包装成一个.NET类:
|
|
2
27
A blog on MSDN describes a solution 这篇关于在Vista/7上的Windows服务的交互式会话中启动新进程的文章非常有用。 对于非本地系统服务,基本思想是:
|
|
|
3
8
这样做是个坏主意。虽然可能并非完全不可能,但微软竭尽所能使这一切变得尽可能困难,因为它使所谓的 破碎攻击 . 看看拉里·奥斯特曼 wrote about it back in 2005 :
建议的解决方法是使用用户系统托盘中的应用程序。 如果您可以安全地忽略上述问题和警告,则可以按照以下说明操作: |
|
|
4
6
下面是我如何实现它。 它将尝试以当前登录用户的身份(从服务)启动进程。 这是基于将几个来源整合到一起,形成一些有用的东西。 它实际上是纯粹的Win32/C++,所以对原始问题可能没有100%的帮助。 但我希望它能为其他人节省一些时间来寻找类似的东西。 它需要Windows XP/2003(不适用于Windows 2000)。 必须链接到wtsapi32.lib
|
|
|
5
5
我在这里找到了解决方案: http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite 我认为这是一个很好的链接。 |
|
|
6
2
我不知道如何在.NET中实现它,但一般来说,您需要使用win32 API
|
|
|
7
1
实施 默里尤 编码到w10上的Windows服务。从程序文件运行可执行文件时总是抛出错误-2,而我认为这是由于服务的启动路径设置为system32。 指定 工作迪尔 在添加以下行之前没有解决该问题 创建进程计数器 在里面 开始处理当前用户 :
附言:这应该是一个评论,而不是一个回答,但我还没有必要的声誉。我花了一段时间调试,希望能节省一些时间。 |
|
|
8
1
在我的情况下,接受的答案不起作用,因为我启动的应用程序需要管理员权限。我所做的是创建一个批处理文件来启动应用程序。它包含以下内容:
然后,我将此文件的位置传递给startprocessAscurrentUser()方法。做了这个把戏。 |