代码之家  ›  专栏  ›  技术社区  ›  Jensen

要求用户像VS调试器那样以管理权限重新启动应用程序

  •  4
  • Jensen  · 技术社区  · 14 年前

    现在,使用注册表的USB功能应该只由一个用户完成一次,或者当他想重新校准他的设备时,这样我就不需要一直拥有管理权限。

    2 回复  |  直到 14 年前
        1
  •  3
  •   JaredPar    14 年前

    您可以使用 ProcessStartInfo Verb 属性转换为“runas”。

    var info = new ProcessStartInfo();
    info.UseShellExecute = true;
    info.Verb = "runas";
    // set the rest of the information
    Process.Start(info);
    

    这将使用标准的Windows对话框提示用户运行管理代码。

        2
  •  3
  •   Kate Gregory    14 年前

    VisualStudio不会以管理员的身份重新启动自己,它只会检测自己是否以管理员的身份运行,如果不是,就会显示一个消息框。对你来说最简单的测试就是打电话 IsInRole -即使您在Administrators组中,如果应用程序运行的是非提升的,它也会返回false。例如:

            WindowsIdentity wi = WindowsIdentity.GetCurrent();
            WindowsPrincipal wp = new WindowsPrincipal(wi);
    
            if (wp.IsInRole("Administrators"))
            {
                MessageBox.Show("Yes, you are an Administrator.", "Is Administrator?", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("No, you are not an Administrator.", "Is Administrator?", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }