在 Vista 上禁用 UAC 会话

在 Vista 上禁用 UAC 会话

我正在尝试从源代码构建 Firefox,但遇到了麻烦。我认为原因是 Vista 中的 UAC。

这个问题类似于其他询问 UAC 的人但我想知道我是否可以在特定时间段内(构建时)或直到注销时禁用 UAC。

有人可能会告诉我,无论我尝试做什么,我都可以使用“以管理员身份运行”选项。但这对我的目的不起作用。我需要完全关闭它,以便构建脚本正在运行的每个程序都可以以完全管理员权限运行。此外,我已经尝试过了。

我正在尝试解决构建问题,并且希望完全消除 UAC,我不想一直禁用整个计算机的 UAC —— 仅当我即将构建时。

该问题与以下内容相关:nsinstall:Vista 上的文件编号错误在 Stack Overflow 上。

答案1

看来 Vista 中的 UAC 已经根深蒂固,要完全禁用它,您需要重新启动。

网上有指南,只需通过单个命令行调用即可禁用它。但您需要重新启动,这样您的会话就由您控制,一旦构建完成,您就可以重新启用它并再次重新启动。

以下是如何对极客

禁用命令:

C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

启用命令:

C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f

答案2

在我的 Vista 机器上,我有一个快速启动快捷方式,可以以管理员身份启动 cygwin rxvt。如果您只是使用 DOS 机器,则无法轻松使用兼容性属性页,因为 Vista 可以识别 cmd.exe,但是如果您只是将 cmd.exe 复制到主文件夹(“notcmd.exe”),那么您将能够“以管理员身份”运行它。

我甚至将我的 % 提示设置为 #by isadmin && PS1='# '

isadmin.c

#include <stdio.h>
#define _WIN32_WINNT 0x0500
#include <windows.h>

BOOL
APIENTRY
CheckTokenMembership(
    IN HANDLE TokenHandle OPTIONAL,
    IN PSID SidToCheck,
    OUT PBOOL IsMember
    );


int main (int argc, char **argv)
{
  SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
  PSID AdministratorsGroup;
  BOOL isAdmin;

  if (AllocateAndInitializeSid (&NtAuthority, 2,
          SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
          0, 0, 0, 0, 0, 0, &AdministratorsGroup) == 0 ||
      CheckTokenMembership (NULL, AdministratorsGroup, &isAdmin) == 0) {
      printf ("failed with win32 error %lu\n", GetLastError ());
      exit (2);
    }

  FreeSid (AdministratorsGroup);
  exit (!isAdmin);
}

相关内容