C# 以管理员身份在受限用户上执行EXE文件以运行命令

C# 以管理员身份在受限用户上执行EXE文件以运行命令,c#,C#,当受限用户单击时,我需要创建文件EXE,它将以管理员(本地管理员)身份执行命令 我使用了以下代码: System.Diagnostics.Process.Start(@"C:\Test.bat", ".\\Administrator", Password,".\\"); 是否有任何方法可以运行以下命令: netsh int ip set address "local area connection" static 192.168.1.16 255.255.255.0 192.168.1.1 1

当受限用户单击时,我需要创建文件EXE,它将以管理员(本地管理员)身份执行命令

我使用了以下代码:

System.Diagnostics.Process.Start(@"C:\Test.bat", ".\\Administrator", Password,".\\");
是否有任何方法可以运行以下命令:

netsh int ip set address "local area connection" static 192.168.1.16 255.255.255.0 192.168.1.1 1
不使用批处理文件

当我使用.msi文件时,同样的代码也有问题。它不起作用

System.Diagnostics.Process.Start(@"C:\Test.msi", ".\\Administrator", Password,".\\");

有没有办法以管理员身份执行msi文件?

在HKEY_CLASSES_根目录下找到您的exe,然后将此外壳扩展添加到您的注册表中

Windows注册表编辑器5.00版

[HKEY\U CLASSES\U ROOT\*\shell\forcerunasinvoker] @=“无管理员权限运行(UAC)”

[HKEY\U CLASSES\U ROOT\*\shell\forcerunasinvoker\command] @=“cmd/min/C\”set\uu COMPAT\u LAYER=RUNASINVOKER&&start\”\“%1\”

希望您会发现这很有用

运行方式:

set __COMPAT_LAYER=RunAsInvoker
start App Name
在记事本中写入,然后另存为.bat

“应用程序名称”应替换为安装程序

请记住将.bat文件保存在与安装程序相同的位置。如果没有,则命令无法识别应用程序名称

或者,您可以下载UniExtract并以管理安装程序的形式运行,用户受限制。下载Uniextract作为便携式版本,您可以在portableapps上找到它,依此类推。

System.Diagnostics.Process proc=new System.Diagnostics.Process();
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            System.Security.SecureString ssPwd = new System.Security.SecureString();
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.FileName = @"cmd.exe";
            proc.StartInfo.Arguments = "/c netsh interface ip set address \"Ethernet\" static 192.168.1.16 255.255.255.0 192.168.1.1";
            proc.StartInfo.Domain = "";
            proc.StartInfo.Verb = "runas";
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.UserName = sysAdminUser;
            string password = sysAdminPass;
            for (int x = 0; x < password.Length; x++)
            {
                ssPwd.AppendChar(password[x]);
            }
            password = "";
            proc.StartInfo.Password = ssPwd;

            proc.Start();
System.Security.SecureString ssPwd=新的System.Security.SecureString(); proc.StartInfo.UseShellExecute=false; proc.StartInfo.FileName=@“cmd.exe”; proc.StartInfo.Arguments=“/c netsh interface ip set address\“Ethernet\”static 192.168.1.16 255.255.255.0 192.168.1.1”; proc.StartInfo.Domain=“”; proc.StartInfo.Verb=“runas”; proc.StartInfo.RedirectStandardOutput=true; proc.StartInfo.RedirectStandardError=true; proc.StartInfo.UserName=sysAdminUser; 字符串密码=sysAdminPass; for(int x=0;x
右键单击文件并
以管理员身份运行
。我需要受限用户在不告诉他与“msi”相关的密码的情况下执行此操作:您最好找到另一种安装所需内容的方法-直接复制文件?或使用组策略?或者可能使用click once安装到用户配置文件中?可能重复抱歉,但我不明白,您能举个例子吗?例如,我需要更改计算机的IP,而我使用我知道的管理员密码在这台计算机上使用受限用户,而没有使用管理员登录。UniExtract是什么?你怎么能得到它?