windows下编程中的多用户、权限问题

news/2024/11/28 18:30:40/文章来源:https://www.cnblogs.com/xietianjiao/p/18574927

编程中经常遇到windows相关的多用户问题,以下通过代码进行实际验证。

一、创建一个UserTest程序

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;namespace UserTest
{internal class Program{static void Main(string[] args){// 获取当前进程Process currentProcess = Process.GetCurrentProcess();// 获取当前 Windows 用户WindowsIdentity identity = WindowsIdentity.GetCurrent();string userName = identity.Name;Console.WriteLine($"当前进程: {currentProcess.ProcessName}");Console.WriteLine($"启动用户: {userName}");WindowsPrincipal principal = new WindowsPrincipal(identity);// 检查用户是否为管理员bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);Console.WriteLine($"当前用户具有管理员权限: {isAdmin}");// 获取当前用户的主目录string userDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);Console.WriteLine($"当前用户目录: {userDirectory}");Console.ReadLine();}}
}

以此,我们可以获得当前进程的启动用户、权限、当前用户目录

运行得到结果

 二、使用管理员权限对当前用户的影响

验证:在非管理员权限账户下,使用管理员权限运行此程序

 结论:管理员权限并不会改变当前程序的用户目录和启动用户,只是改变了执行权限

三、常用的清单文件获取管理员权限对当前用户的影响

添加以下清单文件的程序在非管理员前线下执行

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"><security><requestedPrivileges><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /></requestedPrivileges></security></trustInfo>
</assembly>

结论:只是增加了管理员权限,不会改变程序的运行用户和程序的用户目录

四、指定启动程序的用户

要在双击程序时使用其他用户启动,通常需要使用脚本或快捷方式来实现,因为 Windows 不直接支持这种功能。以下是一些可能的方法:

 使用批处理脚本

1. 创建批处理文件:
- 创建一个 `.bat` 文件,使用 `runas` 命令来指定用户。

@echo off
runas /user:DOMAIN\Username "path\to\your\program.exe"

- 当运行此批处理文件时,系统会提示输入密码。

使用快捷方式

1. 创建快捷方式:
- 右键点击桌面,选择“新建” > “快捷方式”。
- 在“请键入对象的位置”中输入:

 

runas /user:DOMAIN\Username "path\to\your\program.exe"

- 完成创建后,双击此快捷方式会提示输入密码。

使用任务计划程序

1. 创建计划任务:
- 打开任务计划程序,创建一个新任务。
- 在“常规”选项卡中,选择“使用以下用户账户运行”并输入目标用户。
- 在“操作”选项卡中,设置启动程序的路径。
- 创建一个指向该任务的快捷方式,使用 `schtasks` 命令来运行:

schtasks /run /tn "TaskName"

 

验证结果表:

双击 bat文件指定runas用户启动 进程处于当前会话上 获取的为指定的用户 当前用户目录为指定的用户目录 进程用户为指定用户
双击 快捷方式指定runas用户启动 进程处于当前会话上 获取的为指定的用户 当前用户目录为指定的用户目录 进程用户为指定用户
双击 发送快捷方式不指定runas用户启动 进程处于当前会话上 获取的为指定的用户 当前用户目录为指定的用户目录 进程用户为指定用户
使用定时任务启动 进程处于指定的会话上 获取的为指定的用户 当前用户目录为指定的用户目录 进程用户为指定用户
         

 

结论:

在不指定用户时,用户双击,哪个用户的会话就使用哪个用户的资源。

在指定用户时候,用户双击启动(通过会话),会在当前会话创建指定用户进程的程序。

在指定用户时候,不通过UI操作启动,完全使用指定用户的资源。

五、结论

  1. 桌面会话:

    • Windows 将图形界面程序与当前用户的桌面会话关联,因此即使程序以其他用户身份运行,它的界面仍会显示在当前用户的桌面上。
  2. 安全和隔离:

    • Windows 的安全模型设计为隔离不同用户的会话,以防止未经授权的访问。这意味着即使进程以其他用户身份运行,它也不能直接访问其他用户的桌面会话。
  3. 任务管理器显示:

    • 任务管理器会根据当前用户的会话显示程序,即使程序是由其他用户启动

 

六、指定会话启动

如果希望程序在不同用户的桌面会话中运行(例如在远程桌面或不同的用户会话中),可以考虑以下方法:

  1. 远程桌面:

    • 使用远程桌面协议 (RDP) 登录到目标用户的会话,然后启动程序。
  2. 切换用户:

    • 使用“切换用户”功能登录到另一个用户会话,然后启动程序。
  3. 任务计划程序:

    • 配置任务计划程序在目标用户的会话中运行任务,并确保“仅在用户登录时运行”选项被选中。
  4. 服务化  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842995.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电力IEC103/2/1/4规约数据采集仪器网关通讯管理机测试软件工具客户端服务器 LFP/NZ94/N4F规约

www.daq-iot.com作为物联网数据采集解决方案专业提供商,数采物联网小编daq-iot在这里做以下内容介绍,并诚挚的欢迎大家讨论和交流。IEC103规约支持:工具完全适用于电力行业的各种通信测试采集需求。 串口和以太网通信:工具支持通过串口和以太网进行通信,灵活适应不同的电力通…

创新的在线音乐播放器-支持特别歌曲

音乐播放器开发学习笔记 项目简介 这是一个基于Web的音乐播放器练习项目,主要用于学习和实践Web开发技术。项目采用PHP开发,实现了基础的音乐播放功能。 在线体验实现功能 本项目目前包含以下基础功能:音乐搜索和播放 音频文件下载 歌词同步显示 音量调节控制 播放控制(暂停…

触觉智能亮相OpenHarmony人才生态大会2024

11月27日,OpenHarmony人才生态大会2024在武汉隆重举行。本次大会汇聚了政府领导、学术大咖、操作系统技术专家、高校及企业代表,围绕新时代背景下的操作系统人才培养进行了深入探讨,分享高校、企业在产学研融合方面的先进经验,全面展现了OpenHarmony在人才生态领域学-考-用…

20222415 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 本周学习了Web安全。 2.实验过程 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 Registrar: MarkMonitor Inc. Registrar Abuse Contact Email: abusecomplaints@markmonitor.com Registrar Abus…

活动回顾丨云原生开源开发者沙龙杭州站回放 PPT 下载

11 月 08 日,云原生开源开发者沙龙丨AI 应用工程化专场在杭州顺利举办。现场座无虚席,阿里云一线工程师围绕《构建面向 AI 应用可观测能力》、《Java 开发者如何玩转 AI》、《事件驱动构建 AI 原生应用》、《智启未来:通过 AI 网关快速构建智能应用》4 个当下热门议题深入分…

Vulnhub WestWild1.1

0x01:端口扫描 主机发现 nmap -sn 192.168.231.0/24全端口扫描 nmap --min-rate 10000 -p- 192.168.231.140开了22ssh,80http,两个smb服务 详细端口扫描 nmap -sT -sC -sV -O --min-rate 10000 -p22,80,139,445 192.168.231.140漏洞扫描 nmap --script=vuln -p22,80,139,445…

【VMware VCF】基于 RDU 方式更新 VCF 环境中的 vCenter Server 组件。

Reduced Downtime Upgrade(RDU)是一种基于“迁移”的 vCenter Server 更新方式,通过临时部署一个与源 vCenter Server 完全一致的目标 vCenter Server(类似于跨版本 vCenter Server 升级),然后找一个维护窗口期完成源 vCenter Server 和目标 vCenter Server 的切换即可,…

『模拟赛』多校A层冲刺NOIP2024模拟赛27终结篇

『模拟赛记录』多校A层冲刺NOIP2024模拟赛27终结篇Rank rp++A. 【模板】分治FFT 签。没取模挂 50pts。 列出式子发现无论何种合并方式,最终权值均为 \(\sum_{i=1}^n\ a_i\times (\sum_{j=i}^n\ a_i)\),因此求方案数即可。发现每一步相当于从当前堆数中任选两个出来,容易得出…

服装行业如何应对快速生产与库存管理挑战?

在服装行业,快时尚的浪潮让市场变化迅速,消费者的需求也在不断变化。而与此同时,企业面对的压力也越来越大——生产周期紧、库存管理难、设计和销售协调困难,往往导致一系列管理瓶颈。如何在如此竞争激烈的环境中提高生产效率、快速响应市场需求,同时确保库存不积压?这些…

智能佳科技—3台Aloha机械臂同发交付, 协同作战新纪元!

视频链接:https://mp.weixin.qq.com/s/JA3iaVqerm4owFYAkrYy8g近日,北京智能佳科技有限公司顺利完成三台Mobile Aloha机械臂的共同发货交付使用任务,再次展现了公司在机器人技术领域的深厚积累和卓越实力。 自2006年8月成立以来,智能佳科技始终秉持着务实创新的精神,连续四…

LiV-GS: LiDAR-Vision Integration for 3D Gaussian Splatting SLAM in Outdoor Environments

arxiv |哈工大发布 LiV-GS:户外环境中基于3D高斯泼溅的LiDAR-视觉集成SLAM系统 【LiV-GS: LiDAR-Vision Integration for 3D Gaussian Splatting SLAM in Outdoor Environments 】 LiV-GS: LiDAR-Vision Integration for 3D Gaussian Splatting SLAM in Outdoor Environments …

Drug2Cell 使用方法

Drug2Cell利用单细胞图谱和EMBL-EBI ChEMBL数据库中的1900万个药物-靶标相互作用。使用该方法能够对于基础医学的研究在后续应用上开拓思路。Drug2cell is a new computational pipeline that can predict drug targets as well as drug side effects.该软件是英国sanger研究所…