“以管理员身份运行”到底有什么作用?

在Windows 7上,我有一个命令行程序,该程序由于文件写入许可错误而失败,并弹出烦人UAC每次我运行来自"未知发布者"的命令行程序时对话。 但是,如果我通过右键单击并选择"作为管理员运行"来启动控制台,那么即使仍然存在" UAC对话框",安装也可以正常工作。 我的用户已经是"管理员"组的成员,那么"作为管理员"的精确运行使我的安装工作是什么? 我的具体问题是精确的:“作为管理员运行"做什么?到目前为止,两个答案都没有解决。(例如,它是作为"管理员"用户运行新过程的?还是以当前用户的身份运行该过程,但具有提高的特权?如果是的,什么特权?这与我从我的特权有何不同用户在"管理员"组中? (具体来说,我正在使用来自SourceForge,不是常规的 CMD 窗口,但我认为这并不重要。在Windows 7上安装Python并分发分发给"写作失败…拒绝许可”) 答案 当您登录Windows时,会创建一个访问令牌。这可以识别您,您是您的成员和您的特权的群体。并请注意,用户是否是管理员,是由用户是否是管理员组的成员确定的。 没有UAC,运行程序时,它将获得访问令牌的副本,这可以控制程序可以访问的内容。 使用UAC,当您运行程序时,将获得有限的访问令牌。这是从组(以及其他一些更改)中删除的"管理员"的原始访问令牌。即使您的用户是管理员组的成员,该程序也无法使用管理员特权。 当您选择"作为管理员运行"并且您的用户是管理员时,程序将使用原始的无限制访问令牌启动。如果您的用户不是管理员,则会提示您的管理员帐户,并且该程序在该帐户下运行。 来自: stackoverflow.com

从非Admin应用程序作为管理员运行过程

从没有作为管理员运行的应用程序中,我有以下代码: ProcessStartInfo proc = new ProcessStartInfo(); proc.WindowStyle = ProcessWindowStyle.Normal; proc.FileName = myExePath; proc.CreateNoWindow = false; proc.UseShellExecute = false; proc.Verb = "runas"; 当我致电Process.start(proc)时,我没有弹出弹出式允许以管理员的身份运行,并且EXE不会以管理员的身份运行。 我尝试在MyExepath上找到的可执行文件中添加一个app.manifest,并将请求的ExecutionLevel更新为 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 使用更新的app.manifest,在过程中。开始(proc)呼叫,我得到了一个例外,“请求的操作需要抬高。” 为什么不设置管理员特权不设置管理员? 我正在Windows Server 2008 R2标准上进行测试。 答案 你must 使用ShellExecute。Shellexecute是唯一知道如何启动的APIConsent.exe为了提升。 示例(.NET)源代码 在C语言中ShellExecute是使用Process.Start随着UseShellExecute = true: private void button1_Click(object sender, EventArgs e) { //Public domain; no attribution required. ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\Notepad.exe"); info.UseShellExecute = true; info.Verb = "runas"; Process.Start(info); } 如果您想成为一个好的开发人员,则可以在用户单击时捕获No: private void button1_Click(object sender, EventArgs e) { //Public domain; no attribution required....

以管理员身份运行的批处理脚本

我正在编写一个客户端/服务器检查程序,但它需要以管理员身份运行。 我希望它在我的网络和用户上静默运行,并且我不希望出现"以管理员身份运行"提示。是否有任何开始代码可以放入批处理文件中以使其以管理员身份自动运行? 答案 无效的解决方案 否: - 创建快捷方式[ -> 兼容性 -> “以管理员身份运行此程序”] 解决方案不起作用。 此选项在 Windows 7 中呈灰色显示。即使禁用了 UAC 否:runas /env /user:domain\Administrator <program.exe/command you want to execute>这也是不够的,因为它会提示用户输入管理员密码。 有效的解决方案 是的:禁用 UAC -> 使用任务计划程序创建作业,这对我有用。 在任务计划程序下创建一个作业,并使其以具有管理员权限的用户身份运行。 明确标记:“以最高权限运行” 禁用UAC,这样就不会提示运行此任务 如果需要,您可以随后通过编辑注册表让脚本启用 UAC。 仍然期待以管理员身份运行脚本的最佳方法,而无需太多麻烦。 来自: stackoverflow.com