繁体   English   中英

使用 Windows 服务的用户界面运行管理进程

[英]Running admin process with user interface from a windows-service

我们想开发一个 Windows 10 设备,其中嵌入了我们的软件套件。 此设备将有两个帐户:管理员帐户和受限帐户。 最终用户(位于世界各地)将使用受限帐户并且不知道管理员密码。

我们面临的问题是我们无法运行具有 gui 和 admin 权限的软件(即更新我们的软件套件的设置)。

直到现在我们尝试过:

  1. 从 Windows 服务运行该进程:该进程以管理员权限启动,但未显示 gui
  2. 从模拟当前用户的 Windows 服务运行该进程:该进程显示 gui,但没有管理员权限
  3. 从模拟管理员的 Windows 服务运行该进程:与 1 中的结果相同。
  4. 使用任务调度程序运行进程:管理员(无 gui)和受限帐户(无管理员权限)都没有运气
  5. 使用 psexec 运行进程(来自 sysinternals pstools):结果与上述相同。

是否有任何解决方法可以通过 Windows 服务的用户界面启动管理进程? 我知道我们可以使用具有管理员权限的服务与非管理员 gui 进程(使用命名管道、mqtt 或...)进行通信,但这对于 installshield(或 nsis 或...)设置是不可行的。

或者我们的问题还有其他解决方案吗?

感谢您的任何答复。

Team Viewer 有一个 API 可以解决所有这些问题。 它还允许您选择必须向用户提供哪些凭据。 您可以很好地使用它来打开您的用户帐户,然后在安装 TeamViewer API 和所有准备好权限集的东西之后使用它。 你可以建立一个像样的连接。

使用团队查看器 API,您可以从 cmd 类型控制您的 cmd: start /pathtoteamviewer.exe然后,将访问您要使用的 PC 的远程主机将告诉用户输入用户 PC 的 ID 和密码。 而 Kaboom 你已经轻松完成了你想要的。

如果您在 TeamViewer 中启用远程连接的密码功能,这也将有助于您将项目带到下一个级别。

我希望这有帮助。

我已经理解你的问题。 回到我编程的那一天,我为自己制定了一个解决方案;

  1. 创建一个 Powershell 脚本来从你的网站下载东西(一个 Update.txt 文件); 请参阅: https : //blog.jourdant.me/post/3-ways-to-download-files-with-powershell

    $url = " http://mirror.internode.on.net/pub/test/Update.txt "

    $output = "$PSScriptRoot\\Update.txt"

    $start_time = 获取日期

    Invoke-WebRequest -Uri $url -OutFile $output

    写输出“所用时间:$((Get-Date).Subtract($start_time).Seconds) second(s)”

  2. 在该文件中写入版本号,并且在您创建的程序中也有一个 version.txt,如果它不等于请用户更新的 Update.txt,则通过简单的逻辑比较它们。

  3. 在用户出现“是/否”对话框后,再次使用 Powershell 脚本下载更新安装程序。

  4. 使用管理员权限运行更新程序请参阅: 如何在 C# 中以管理员模式启动进程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM