以管理员

时间:2018-04-12 13:29:41

标签: c# .net user-permissions

我希望我的应用程序不需要管理员来使用它。

我应该可以为普通用户使用。

当用户想要更改应用的某些设置时,我需要管理员权限。

所以我想启动需要管理员权限的应用程序的第二个实例。 (有用户协议请求等)

有没有办法实现这个目标?

我试过:

Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo.FileName = Application.ExecutablePath;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
if (System.Environment.OSVersion.Version.Major >= 6)
{
    p.StartInfo.Verb = "runas";
}
p.Start();

但似乎没有用。

2 个答案:

答案 0 :(得分:1)

您可以创建具有管理员权限的帐户

然后使用管理员帐户的相应值填充ProcessStartInfo实例上的用户密码属性。

类似的东西:

var psi = new ProcessStartInfo
{
    FileName = "notepad.exe",
    UserName = "admin",
    Domain = "",
    Password = pass,
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true
};
Process.Start(psi);

答案 1 :(得分:0)

原来我必须在ProcessStartInfo中使用UseShellExecute而不是Process。 更多解释here

            ProcessStartInfo proc = new ProcessStartInfo();
            proc.UseShellExecute = true;
            proc.WorkingDirectory = Environment.CurrentDirectory;
            proc.FileName = Application.ExecutablePath;
            proc.Verb = "runas";

            try
            {
                Process.Start(proc);
            }
            catch
            {
                return; //U have a BIG problem!
            }
相关问题