首页 > 编程语言 >C# 使用执行cmd命令遇到俄语乱码处理

C# 使用执行cmd命令遇到俄语乱码处理

时间:2023-11-19 11:56:33浏览次数:41  
标签:俄语 C# cmd 乱码 添加 管理员 var keyValue

  1.  设置执行cmd命令的ProcessStartInfo对象编码
  2. 使用System.Text.Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);注册更多字符编码。
通过上面的方式,如果把语言项的Beta版:使用Unicode UTF-8 提供全球语言支持的选择去掉则正常。但是该功能用于修复日志输出还有一些特殊语言乱码的问题。

    3. 给命令行输入chcp 866将当前命令行环境改成俄语

以上方式可以把返回结果出现俄语不乱码,但是执行的命令如果有俄语仍然会执行不成功。 因为我主要是在处理windows账户出现了该问题, 所以我把查询账户是否是管理员使用cmd命令,设置账户为管理员不再使用cmd命令,改成DirectoryEntry的方式。
        /// <summary>
        /// 为账户添加管理员权限
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        private async Task AddAccountAdmin(KeyValuePair<string, bool> keyValue)
        {// 为该账户添加管理员权限var cmdAccountAdd = $"net localgroup administrators {keyValue.Key} /add";
            var strCmdAccountAdd = await ProcessHelper.StartCmdAsync(cmdAccountAdd);
            var adminAccounts = await _accountCountChangedBusiness.GetAdminAccounts();
            // 如果该账户没成功添加管理员,则尝试另一种方式添加管理员(俄语账户名字就没办法通过上面的方式添加管理员)
            if (!adminAccounts.Contains(keyValue.Key))
            {
                AddAccountAdmin(keyValue.Key, keyValue.Value);
            }
        }

        /// <summary>
        /// 为账户添加管理员权限
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="isDomain"></param>
        /// <returns></returns>
        private void AddAccountAdmin(string userName, bool isDomain)
        {
            try
            {var remoteGroup1 = new DirectoryEntry($"WinNT://{Environment.MachineName}/{"Administrators"}, group");
                var adRoot = new DirectoryEntry(string.Format("WinNT://" + (isDomain ? Environment.UserDomainName : Environment.MachineName)));
                var user = adRoot.Children.Find(userName, "user");

                // 如果已经在Administrators组,再添加会报错
                remoteGroup1.Invoke("Add", user.Path);
                remoteGroup1.CommitChanges();
            }
            catch (Exception ex)
            {
            }
        }

 

标签:俄语,C#,cmd,乱码,添加,管理员,var,keyValue
From: https://www.cnblogs.com/log9527blog/p/17841790.html

相关文章

  • C# 22H2之后的windows版本使用SetDynamicTimeZoneInformation设置时区失败处理
    使用SetDynamicTimeZoneInformation设置时区返回false,设置失败。使用PowerShell设置Set-TimeZone成功。///<summary>///设置本地时区///参数取值"ChinaStandardTime",即可设置为中国时区///</summary>///<paramname="timeZoneId"></param>///<retur......
  • ioc
    1为什么需要使用ioc细节还会依赖细节。使用ioc的话,以三层架构为例,当数据访问层(dal)层改变后,业务逻辑层(bll)也得改,甚至表示层(ui)也要改,使用ioc后dal层的改变不会影响其它层自动注入(通过反射):如果1个对象的构造函数参数有多个,每个参数的构造函数又依赖其他参数,你需要写一大堆......
  • 无涯教程-RSpec - Tags标签
    RSpecTags提供了一种在规范文件中运行特定测试的简便方法。假设您只想运行指定测试方法,则可以使用Tags标签实现。describe"HowtorunspecificExampleswithTags"doit'isaslowtest',:slow=>truedosleep10puts'Thistestisslow!'end......
  • 【pwn】[FSCTF 2023]What am I thinking? --pwntools工具的利用
    这道题没给附件,直接就是nc这个题目的意思是,我们随机输入一个数,然后发给我们一段base64加密后的密文,真正num就在里面,我们现在写个pwntools脚本提取一下这段base64密文,解密一下,看看是什么东西exp:io=remote("node4.anna.nssctf.cn",28045)io.sendline(str(2))io.recvuntil(b"......
  • 使用 ChatGPT 帮助小学生编程入门系列之二:使用 Python 编程发送电子邮件
    本系列前一篇文章,我们已经介绍了如何使用Python编写一段代码,将搜索引擎上找到的天气预报网站上的信息,读取到本地:使用ChatGPT帮助小学生编程入门系列之一:Python编程读取和解析天气预报网页上的数据本文我们再进一步,目标是把一段文本,通过Python发送到指定的邮箱去。学会......
  • 初识uds之abstract socket
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  在《记一次有趣的hwclock写RTC的PermissionDenied错误》(https://www.cnblogs.com/Iflyinsky/p/17841708.html或者https://https......
  • Microservice- Resiliency patterns: Retry Pattern
    RetryPatternTransientfaultsoccurwhenamomentarylossofservicefunctionalityself-corrects. TheretrypatterningRPCenablesustoretryafailedcallautomaticallyandthusis perfectfortransientfaultssuchasthese:Instantnetworkfailures......
  • THM-核心Windows进程(Core Windows Processes)
    任务管理器使用任务管理器可以管理系统中常见的进程,以及进程的相关信息右键其中的名称或者PID等列选择列,可以选择一些平常看不到的信息,例如路径名称、命令行系统自带的任务管理器的功能是有限的,这里推荐使用方便查看的工具ProcessExplorer:https://learn.microsoft.com/e......
  • 使用Swagger,在编写配置类时报错Caused by: java.lang.NullPointerException: Cannot i
    1.问题Causedby:java.lang.NullPointerException:Cannotinvoke"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()"because"this.condition"isnull2.解决参考链接:解决Cannotinvoke"org.springframework......
  • java反序列化----CC4利用链学习笔记
    java反序列化----CC4利用链学习笔记目录java反序列化----CC4利用链学习笔记环境配置利用链环境配置jdk8upom.xml中写入<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><ve......