c#通过进程调用cmd判断登录用户权限代码分享

下面是详细的攻略:

1. 什么是进程调用?

进程调用是指一个程序调用另一个程序的过程。在操作系统中,每个程序都有一个进程 ID(PID),可以用这个 PID 来识别程序。进程调用可以用来执行一些和本程序无关的任务,比如打开新程序、关闭进程、执行命令等。

2. 怎样通过进程调用 cmd?

C# 中,可以通过 Process 类来操作进程。Process.Start() 方法可以用来启动一个新的进程,开启 cmd 是其中一种用法。

以下是简单的示例代码:

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        ProcessStartInfo ps = new ProcessStartInfo("cmd");
        Process process = new Process();
        process.StartInfo = ps;
        process.Start();
     }
}

以上代码中,首先定义了一个 ProcessStartInfo 对象 ps,将要开启的进程名字作为参数传入。接着,定义了一个 Process 对象 process,将 ps 赋值给 process.StartInfo,并用 process.Start() 方法开启进程。

3. 怎样判断登录用户权限?

在 cmd 中,可以使用 whoami 命令来查看当前登录用户信息。比如,我们可以通过以下代码来执行该命令:

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        ProcessStartInfo ps = new ProcessStartInfo("cmd");
        ps.RedirectStandardInput = true;
        ps.RedirectStandardOutput = true;
        ps.UseShellExecute = false;
        Process process = new Process();
        process.StartInfo = ps;
        process.Start();
        process.StandardInput.WriteLine("whoami");
        process.StandardInput.WriteLine("exit");
        string output = process.StandardOutput.ReadToEnd();
        Console.WriteLine(output);
     }
}

以上代码中,除了开启 cmd 窗口的部分和关闭进程之外,还新增了一些代码,来将 cmd 输出写入到一个字符串 output 中,并且打印该字符串。

其中,ps.RedirectStandardInput = true;ps.RedirectStandardOutput = true; 用来将 cmd 的输入输出指向程序,以便执行一些输入输出操作。ps.UseShellExecute = false; 表示不要使用操作系统的 shell 程序(比如 cmd、bash)来执行命令。

执行结果如下:

C:\Users\username>
username

可以看到,执行结果中包含了当前登录用户的信息。

4. 示例代码

以下是完整的示例代码:

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        ProcessStartInfo ps = new ProcessStartInfo("cmd");
        ps.RedirectStandardInput = true;
        ps.RedirectStandardOutput = true;
        ps.UseShellExecute = false;
        Process process = new Process();
        process.StartInfo = ps;
        process.Start();
        process.StandardInput.WriteLine("whoami");
        process.StandardInput.WriteLine("exit");
        string output = process.StandardOutput.ReadToEnd();
        Console.WriteLine(output);
     }
}

还有另外一个示例代码,来演示如何通过进程调用启动一个记事本应用。

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        Process process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "notepad";
        process.StartInfo = startInfo;
        process.Start();
     }
}

以上代码中,startInfo.FileName 的值为记事本的可执行文件 notepad.exe,用 process.Start() 来执行该可执行文件。执行结果为,命令行窗口启动一个新的记事本应用。

结束语

通过这个攻略,你学习了如何在 C# 中通过进程调用 cmd 来判断登录用户权限、打开命令行窗口、启动一个记事本应用等。这些技能可以帮助你完成更多有趣的 C# 项目!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#通过进程调用cmd判断登录用户权限代码分享 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 关系型数据库和非关系型数据库概述与优缺点对比

    关系型数据库和非关系型数据库概述与优缺点对比 概述 关系型数据库和非关系型数据库是两种不同的数据库类型。关系型数据库是指使用关系模型来组织数据的数据库,而非关系型数据库则是指使用其他数据模型来组织数据的数据库。关系型数据库最常见的代表是 MySQL、Oracle、SQL Server 等,而非关系型数据库最常见的代表是 MongoDB、Redis、Cassa…

    C# 2023年5月17日
    00
  • Asp.net把图片存入数据库和读取图片的方法

    首先,我们需要了解一下在Asp.net中,将图片存入数据库的方法。 将图片存入数据库 在Asp.net中,可以使用二进制对图片进行编码,然后将编码后的二进制数据存入数据库。具体步骤如下: 1.创建数据库表 首先我们需要创建一个用于存储图片的表,例如:PictureTable。表中需要包含两个列:图片名称(PictureName)和图片内容(PictureCo…

    C# 2023年5月31日
    00
  • Sitecore XP 10.3(latest) Docker一键部署

    本文演示通过PowerShell+Docker Desktop for Windows 一键部署Sitecore10.3(即Sitecore最新版)Docker开发/测试/演示 环境。 官方参考 SitecoreXP 10.3.0 Developer Workstation Deployment With Docker 演示配置为XP Single(XP0)…

    C# 2023年4月27日
    00
  • C# Lambda 知识回顾

    C# Lambda 知识回顾 什么是Lambda表达式 Lambda表达式是C# 3.0中引入的一个新特性,它可以使我们更简洁的书写代码。Lambda表达式本质上是一个匿名方法,它可以被用来创建委托或表达式树。Lambda表达式对于编写LINQ查询表达式或事件处理程序代码非常有用。 Lambda表达式的语法如下: (parameter_list) =>…

    C# 2023年6月6日
    00
  • 递归输出ASP.NET页面所有控件的类型和ID的代码

    下面是详细讲解递归输出ASP.NET页面所有控件类型和ID的代码的攻略。 步骤一:创建一个空白的ASP.NET Web Forms页面 首先,打开Visual Studio,创建一个空白的ASP.NET Web Forms页面。 步骤二:添加递归遍历代码 在页面的代码文件中,添加以下C#代码: protected void Page_Load(object …

    C# 2023年5月31日
    00
  • Ruby创建数组方法总结

    Ruby创建数组方法总结 在Ruby中,创建数组有多种方法,包括使用字面量、Array.new方法以及多种常用的快捷方式。本文将为大家总结这些方法并提供示例。 使用字面量创建数组 在Ruby中,可以使用方括号 [] 来创建一个空数组,或者在方括号中添加元素来创建一个包含元素的数组。示例: # 创建一个空数组 arr1 = [] # 创建一个包含三个元素的数组…

    C# 2023年6月7日
    00
  • asp.net(c#)程序版本升级更新的实现代码

    升级更新是软件开发中非常重要的一步,在asp.net(c#)开发中也同样重要。下面是一个完整的攻略,帮助你了解ASP.NET(C#)程序版本升级更新的实现代码。 1. 创建新版本 在升级更新前,需要创建一个新版本。这可以通过复制现有版本并进行更新来完成。在此过程中,确保版本的文件结构和代码结构保持一致。在文件和代码都做好更新的情况下,将该版本打包。如果需要,…

    C# 2023年5月31日
    00
  • c#异步发送邮件的类

    C#中异步发送邮件的类可以使用SmtpClient类和MailMessage类来实现。下面是详细的攻略: 步骤一:引入命名空间 首先需要在代码文件中引入以下命名空间: using System.Net; using System.Net.Mail; 步骤二:创建邮件消息 接下来,需要创建MailMessage对象并设置发送邮件的主题、内容和发送地址等信息: …

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部