当前位置: 首页 > news >正文

记录 使用PsExec启动System权限的WPF 程序

一、前提

在做桌面应用的时候,相信我们都会遇到使用System权限打开某些应用,首先我们想到的是使用windows服务的方式去打开某些应用,但是使用windows服务去打开某些应用,都会遇到一些带有UI界面的应用打不开,或者出现奇奇怪怪的的问题。今天主要介绍一下使用PsExec启动带有System权限的WPF应用程序。

二、介绍PsExec

PsExec - Sysinternals | Microsoft Learn

简介

Telnet 等实用工具和远程控制程序(如 Symantec 的 PC Anywhere)可以让你在远程系统上执行程序,但它们的设置可能很麻烦,需要你在想要访问的远程系统上安装客户端软件。 PsExec 是一种轻量级 telnet 替代品,可让你在其他系统上执行进程,并为控制台应用程序提供完整交互性,而无需手动安装客户端软件。 PsExec 最强大的用途包括在远程系统上启动交互式命令提示符,以及 IpConfig 等远程启用工具,否则无法显示有关远程系统的信息。

注意:某些防病毒扫描程序报告一个或多个工具感染了“远程管理员”病毒。 PsTools 均不包含病毒,但它们已被病毒使用,这就是它们触发病毒通知的原因。

安装

只需将 PsExec 复制到可执行文件路径即可。 键入“psexec”会显示其使用语法。

使用 PsExec

请参阅 2004 年 7 月期 Windows IT 专业人员杂志中 Mark 的文章,其中介绍了 PsExec 的高级用法。

用法:

Windows 命令提示符
psexec [\\\\computer[,computer2[,...] | @file]][-u user [-p psswd]][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-g n][-a n,n,...][-accepteula][-nobanner] cmd [arguments]

 

 
参数说明
-a 使用逗号分隔应用程序可以在上面运行的处理器,其中 1 是编号最低的 CPU。 例如,若要在 CPU 2 和 CPU 4 上运行应用程序,请输入:“-a 2,4”
-c 将指定的可执行文件复制到远程系统以执行。 如果省略此选项,则应用程序必须位于远程系统上的系统路径中。
-d 不要等待进程终止(非交互式)。
-e 不要加载指定帐户的配置文件。
-f 复制指定的程序,即使文件已存在于远程系统上。
-i 运行程序,使其与远程系统上指定会话的桌面进行交互。 如果未指定会话,则进程在控制台会话中运行。 当尝试以交互方式运行控制台应用程序(使用重定向的标准 IO)时,需要此标志。
-h 如果目标系统为 Vista 或更高版本,则使用帐户的提升令牌(如果可用)运行进程。
-l 以受限用户身份运行进程(删除 Administrators 组,并仅允许分配给 Users 组的权限)。 在 Windows Vista 上,进程以低完整性运行。
-n 指定连接到远程计算机的超时时间(以秒为单位)。
-p 指定用户名的可选密码。 如果省略此内容,系统将提示你输入隐藏密码。
-r 指定要创建或与之交互的远程服务的名称。
-s 在系统帐户中运行远程进程。
-u 指定登录远程计算机的可选用户名。
-v 仅当指定文件的版本号较高或比远程系统上的版本号新时,才复制指定文件。
-w 设置进程的工作目录(相对于远程计算机)。
-x 在 Winlogon 安全桌面上显示 UI(仅限本地系统)。
-priority 指定 -low、-belownormal、-abovenormal、-high 或 -realtime,以便以不同的优先级运行进程。 使用 -background 在 Vista 上以低内存和 I/O 优先级运行。
computer 指示 PsExec 在指定的远程计算机上运行应用程序。 如果省略计算机名称,PsExec 将在本地系统上运行应用程序,如果指定通配符 (\\*),PsExec 将在当前域中的所有计算机上运行命令。
@file PsExec 将在文件中列出的每台计算机上执行命令。
cmd 要执行的应用程序的名称。
arguments 要传递的参数(请注意,文件路径必须是目标系统上的绝对路径)。
-accepteula 此标志禁止显示许可证对话框。
-nobanner 此标志会消除启动横幅和版权消息。

可以用引号将名称中有空格的应用程序括起来,例如

Windows 命令提示符 
psexec \\marklap "c:\\long name app.exe"

输入仅在你按 Enter 键时传递到远程系统。 键入 Ctrl-C 将终止远程进程。

如果省略用户名,该进程将在远程系统上的帐户上下文中运行,但无权访问网络资源(因为它正在模拟)。 如果远程进程需要访问网络资源或在不同的帐户中运行,请在 Domain\User 语法中指定有效的用户名。 请注意,密码和命令在传输到远程系统时会加密。

PsExec 返回的错误代码特定于所执行的应用程序,而不是 PsExec。

示例

我写的这篇文章介绍了 PsExec 的工作原理,并提供了有关如何使用它的提示:

以下命令在 \\marklap 上启动交互式命令提示符:

Windows 命令提示符 
psexec -i \\marklap cmd

此命令使用 /all 开关在远程系统上执行 IpConfig,并在本地显示生成的输出:

Windows 命令提示符 
psexec -i \\marklap ipconfig /all

此命令将程序 test.exe 复制到远程系统,以交互方式执行:

Windows 命令提示符 
psexec -i \\marklap -c test.exe

指定已安装在远程系统上的程序的完整路径(如果它不在系统的路径上):

Windows 命令提示符  
psexec -i \\marklap c:\bin\test.exe

在系统帐户中以交互方式运行 Regedit,以查看 SAM 和安全密钥的内容:

Windows 命令提示符  
psexec -i -d -s c:\windows\regedit.exe

若要以受限用户权限运行 Internet Explorer,请使用以下命令:

Windows 命令提示符 
psexec -l -d "c:\program files\internet explorer\iexplore.exe"

下载 下载 PsTools (5 MB)

PSTools

PsExec 是 Sysinternals 命令行工具日益增多的工具包的一部分,可帮助管理名为 PsTools 的本地和远程系统。

运行平台:

  • 客户端:Windows 8.1 及更高版本。
  • 服务器:Windows Server 2012 及更高版本。

三、使用PsExec 

1、将下载下来的PsExec 复制到 “C:\Windows\System32”

image

 2、为了方便使用,把PsExec添加到系统的环境变量下:

image

 3、创建一个普通的WPF 程序,编译后的路径为:“E:\Code\wutyDemo\TestSystemWindow\bin\Debug\net8.0-windows\\TestSystemWindow.exe

image

 4、使用管理员身份运行cmd,执行命令:

PsExec.exe -i -d -s "E:\Code\wutyDemo\TestSystemWindow\bin\Debug\net8.0-windows\TestSystemWindow.exe"

image

 5、任务管理器的观察开启的应用权限如下:

image

 

参考资料:

PsExec - Sysinternals | Microsoft Learn

【Windows系统】使用psexec提升权限_windows 提升exe 应用的权限-CSDN博客

 

http://www.wxhsa.cn/company.asp?id=658

相关文章:

  • std::map的基本用法
  • 力扣20题 有效的括号
  • 2025年9月10日学习笔记之keil软件仿真调试
  • MySQL的explain使用
  • 力扣19题 删除链表的倒数第N个结点
  • 基于LZO的无损数据压缩IP,高性能压缩速率32Gbps,适用于FPGAASIC
  • IDEA创建文件时如何自动生成头部文档注释(简单、实用)
  • 一文带你吃透Power Platform,开启低代码开发新世界
  • docker compose 启动 redis 服务
  • MBR引导的OS Bootloader遇到被bios无视引导(自动重启)的解决办法
  • #java作业
  • 【Qt6】qt6下载地址
  • QOJ1838 Intellectual Implementation 题解
  • OpenSSH漏洞修复
  • 力扣15题三数之和
  • some plan
  • 利用废弃硬件中的零日漏洞:从Netgear路由器到BitDefender盒子的攻击链分析
  • ECT-OS-JiuHuaShan框架:自然规律的具象化智能体(附《易经》类比解析)
  • 力扣第5题最长回文子串
  • 用 Python 和 PaddleOCR 进行验证码识别
  • TASK 1 训练一个网络识别手写数字
  • 复杂背景验证码的识别思路与图像处理方法
  • Symfony学习笔记 - The Symfony Framework Best Practices
  • 大学军训
  • Vue Day3【综合案例2】vue小兔鲜儿
  • Java 基础知识解析
  • 力扣第3题 无重复字符的最长子串
  • UniApp 自定义导航栏
  • P3177 [HAOI2015] 树上染色
  • UniApp 自定义tabBar