一种在.net应用程序中以管理员运行bat批处理的方法

本文介绍两种获取管理员权限的方法:一是通过在项目中添加app.manifest文件并设置相应属性;二是修改bat批处理文件头部,利用特定命令提升权限。此外,还提供了一个C#示例类用于运行命令行程序。

目录

一种是在项目中添加app.manifest文件,并设置

还有一种是在要运行的bat文件头部添加:


管理员运行bat文件,首先需要获取管理员权限。

一种是在项目中添加app.manifest文件,并设置

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

还有一种是在要运行的bat文件头部添加:

@echo off 
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限

regasm ClassLibrary1.dll
regsvr32 WINEX_CAinterface.dll
timeout /t 20

另附上Process运行类:

  public class RunCmd
    {
        private Process proc = null;
        public RunCmd()
        {
            proc = new Process();
        }

        public void Exe(string cmd,string workdir)
        {
            LogHelper.Info($"执行命令行:{cmd}");
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WorkingDirectory = workdir;
            proc.StartInfo.FileName = "cmd.exe";
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;

            proc.OutputDataReceived += new DataReceivedEventHandler(sortProcess_OutputDataReceived);
            proc.Start();
            StreamWriter cmdWriter = proc.StandardInput;
            proc.BeginOutputReadLine();
            if (!String.IsNullOrEmpty(cmd))
            {
                cmdWriter.WriteLine(cmd);
            }
            cmdWriter.Close();
            proc.Close();
            LogHelper.Info($"执行命令行结束");
        }


        private void sortProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (!String.IsNullOrEmpty(e.Data))
            {
                //this.BeginInvoke(new Action(() => { this.listBox1.Items.Add(e.Data); }));
                LogHelper.Info(e.Data);
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值