관리자 권한이나 UAC없이 프로그램을 강제로 실행 하시겠습니까?


122

일반적으로 UAC를 통해 관리자 권한이 필요한 프로그램을 강제로 실행하지 않고 강제로 실행할 수있는 방법이 있습니까? (예 : UAC 프롬프트 및 시스템 전체 액세스 없음 )

추가 : 실행 파일 자체를 수정하지 않고.


제임스의 대답에도 불구하고, 나는 거의 할 수있는 몇 가지 방법을 발견했다 .

  1. 실행 파일을 수정하여 trustInfo매니페스트 에서 항목을 제거 하거나 외부 매니페스트를 완전히 사용할 수 있으므로 UAC없이 프로그램을 시작할 수 있습니다. 불행히도 이것은 실행 파일을 수정하므로 내부 체크섬 테스트로 인해 곧 종료됩니다.
  2. Process Explorer를 사용하여 제한된 사용자로 시작할 수 있습니다. 그러나 이것은 내가 원하는 것보다 훨씬 더 많이 제한하는 것 같습니다 (보호 모드 IE처럼 실행되므로 표준 일반 사용자보다 훨씬 적게 액세스 할 수 있음).

1
실행 파일을 수정하지 말고 .exe를 수정하는 것이 시도한 방법 중 하나입니까?
cutrightjm

3
@ekaj 난 단지 것을 지정 ) 내가 발견 작동하지 않을 것이라고
앤드류 러셀

더 이상 사용하지 않더라도 프로그램을 지정할 수 있습니까? 관리자 권한이 필요한 액세스 권한을 사람들이 아는 데 도움이 될 수 있습니다.
cutrightjm

@ekaj 불행히도 아닙니다. 그러나 특별히 관련이 없습니다. UAC는 프로세스 작성 중 상승을 요구하는 프로그램에 의해 트리거됩니다 (이 경우와 같이 일반적인 방식은 매니페스트 사용). 프로세스가 시작되면 액세스하려는 제한된 리소스에 관계없이 권한 상승 상태를 변경할 수 없습니다.
앤드류 러셀

프로그램에 매니페스트가없고 관리자 권한없이 실행을 거부하면 UAC 설치 프로그램 감지로 인한 것일 가능성이 큽니다. 이 질문을 게시했으며 misha256에 좋은 해결책이 있습니다. 나는 그것을 테스트했고 그것이 작동하는지 확인할 수 있습니다. superuser.com/questions/857616/… 몇 가지 조사를 한 결과 Installer Detection이 존재하는 이유가 없다는 것을 알았습니다. 관리자 권한이 매니페스트의 trustinfo 항목으로 인한 경우에는 분명히 작동하지 않습니다.
user1258361

답변:


74
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

이 텍스트를 저장 <name_of_file>.reg하고 Windows 레지스트리에 추가하십시오. (두 번 클릭하면 트릭이 수행됩니다.)

그런 다음 관리자 권한없이 실행하려는 앱을 마우스 오른쪽 단추로 클릭하고 "권한 상승없이 실행"을 선택하십시오.

경우에 따라 소량의 프로그램 중 0.1 %가 UAC 프롬프트에 대해 두 번 요청할 수 있습니다.


1
Application Compatibility Toolkit shim을 사용했지만 각 실행 파일에는 많은 작업이 있었고 각 파일의 레지스트리에도 정크가 남아있었습니다. 이 방법은 효과가 있고 나는 그것을 더 좋아합니다.
벤 Voigt

2
이것이 가장 간단한 방법 인 것처럼 이것을 받아들이고, 나는 그것을 마침내 확인할 수있었습니다. 또한 한 번 오프 명령 줄로 사소하게 사용할 수있는의 매우 좋은 특성 (외부 제거가 "다음 차례 \"에를 ").
Andrew Russell

1
@Derek과 같은 문제가 있습니다. 응용 프로그램이 UAC를 계속 요청하는 것 같습니다. 시스템 전체 액세스로 신뢰할 수는 없지만 기능이 필요합니다 ..
Gizmo

1
HKEY_CURRENT_USER \ SOFTWARE \ 클래스 * \ 셸 \의 forcerunasinvoker 및 HKEY_CURRENT_USER \ SOFTWARE \ 클래스 * \ 셸 \의 forcerunasinvoker의 \ 명령 : 당신의 열쇠를 변경하여 단지의 레지스트리에 현재 로그인 한 사용자를이를 추가 할 수 있습니다
GodEater

1
@ jpmc26 /min오류 라고 생각합니다 . 솔루션은 그것없이 정확히 동일하게 작동합니다. Vom cmd과 혼합 start스위치 가 있어야합니다 . cmd.exe잘못된 스위치에 대해 불평하지 않는 것 같습니다 . cmd /whatever예를 들어 보십시오 .
cdlvcdlv

53

저장 nonadmin.bat:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

이제 관리자없이 프로그램을 끌어다 놓아 실행할 수 있습니다.

레지스트리 키를 변경하면 관리자 권한이 필요하지 않습니다. 또한 상황에 맞는 메뉴를 어지럽히 지 않습니다.

Vom의 답변을 바탕으로


업데이트 : 이제 공백이있는 프로그램에서도 작동합니다.


드라이브에 액세스해야하는 일부 프로그램에서 시도했지만 드라이브를 감지하지 못했거나 처음부터 작동하지 않았습니다 : / (rufus rufus.akeo.ie )
keinabel

7
@keinabel 아마도 관리자가 실제로 일해야했기 때문일 것입니다. 이 스크립트는 실제로 필요한 작업을 수행하지 않고 관리자 권한이 필요한 프로그램을위한 것입니다. 드라이브에 대한 원시 액세스는 일반적인 관리 작업입니다.
Hjulle

2
꽤 깔끔한! 이 방법을 사용하여 XAMPP를 설치할 수있었습니다.
Krishnaraj

"C : \ Program Files \ ..."디렉토리의 실행 파일에 대해서는 작동하지 않는 것 같습니다. 나는을 얻는다 Windows cannot find 'C:\Program'. Make sure you typed the name correctly, and then try again. 약간의 변형과 운 없이이 명령을 수동으로 여러 번 시도했습니다. 어떤 아이디어?
Jake Smith

1
공백이있는 폴더에있는 파일 위치와 동일한 문제가있었습니다. 큰 따옴표를 제거하여 해결했습니다. cmd / min / C "set __COMPAT_LAYER = RUNASINVOKER &&" "% 1"
ragnar

35

나는 파티에 너무 늦지 않기를 희망하지만 비슷한 질문을 찾고 있었고 여기에 대답을 보지 못했지만 RunAs관리자로 실행할 때 Windows의 기본 제공 명령이 /trustlevel스위치로 수행 할 수 있음을 알았습니다 .

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.

이것은 내 경우에 효과가있었습니다. 아이러니하게도 권한 상승없이 명시 적으로 프로그램을 시작 하려면 관리자 권한 명령 프롬프트가 필요합니다 . 그림을 이동. :) 도움이 되길 바랍니다.


이것이 작동하지 않는 것을 확인할 수 있습니다. 방금 테스트 한 결과 "RUNAS ERROR : 실행할 수 없습니다-(프로그램 이름)입니다. 요청한 작업에 권한이 필요합니다."라는 오류가 발생했습니다.
user1258361

9
@ user1258361 굵은 글씨로 쓴 것처럼 관리자 권한 프롬프트에서이 명령을 실행해야합니다.
Mxx

그것은 윈도우 7에서 높은 프롬프트를 요구하지 않는 것 같습니다 ...
SamB

4
관리자 권한 프롬프트로 테스트하고 명령 줄 runas / trustlevel : 0x20000 (프로그램)을 사용했으며 프로그램은 관리자 권한으로 실행되었습니다. 참고로 0x20000은 기본 사용자입니다.
user1258361

2
물론 높은 명령 프롬프트가 필요합니다 . 그렇지 않으면 이미 관리자 권한이 없으며 시작한 프로세스에도 권한 없습니다.
Twisty Impersonator

16

UAC없이 항상 실행하려는 특정 응용 프로그램이있는 경우 레지스트리를 사용하여 대상을 지정할 수 있습니다 (REG 파일에 텍스트를 추가하고 레지스트리로 가져 오기).

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\example\\application.exe"="RunAsInvoker"

이 답변과 달리이 솔루션은 대체 클릭이나 사용자 상호 작용 변경이 필요하지 않습니다.

Microsoft는 RunAsInvoker "Compatibility Shim"을 추가하여이 프로세스를 호출합니다 .


다른 관련 질문 에 대한 답변은이 답변에 대한 영감을 제공했습니다.
palswim

1
대단히 감사합니다! 이것은 나를 위해 일한 유일한 것이었다! Windows 컨텍스트 메뉴에서 호출되는 응용 프로그램이 있었고 다른 곳에서 올바르게 호출되었지만 항상 관리자로 나타났습니다. 이 수정 후 응용 프로그램이 올바르게 호출되기 시작했습니다.
사용자

3

오늘 MS 응용 프로그램 사용자 지정 툴킷을 사용하여이 문제를 해결했습니다.

나는 기술 공화국 기사 의 지시 따랐다 .

원래:

1) MS 에서 툴킷을 얻습니다 .

2) 수정 클릭

3) RunAsInvoker 옵션을 선택하십시오

4) 수정 사항을 마우스 오른쪽 단추로 클릭하고 설치를 선택하십시오.


답은 원하는 효과와 정반대입니다. 원래 질문은 높은 권한을 요구하는 앱을 높이 지 않고 실행하도록하는 방법이었습니다. 귀하의 답변은 여전히 ​​UAC를 사용하지만 해당 프롬프트를 비활성화합니다. 그것은이 질문에 대한 잘못된 대답입니다.
Mxx

@mxx는 실제로 없습니다. 현재 사용자가 제한되어 있거나 UAC를 사용하도록 설정 한 경우 제한된 권한으로 프로세스가 시작됩니다.
LogicDaemon

1
@LogicDaemon 기사를 실제로 읽으면 해당 단계를 수행 하면 UAC 프롬프트없이 관리자로 앱을 실행 한다는 설명이 표시 됩니다 . 이것은 OP가 요청한 것과 반대입니다.
Mxx

@mxx 아뇨. 에 읽기 TechNet의 RunAsInvoker이 실제로 무엇을. 이것은 실제로 화제 스타터가 요구 한 것이지만, 이전 앱에서만 작동합니다.
LogicDaemon

Explorer, 비 관리 cmd 또는 기타 표준 프로세스가 상위 프로세스 인 경우 RunAsInvoker는 동일한 제한된 권한으로 실행됩니다. (Explorer는 기본적으로 제한적으로 실행됩니다. 그렇지 않으면 파일을 삭제하도록 요청하지 않습니다.) 실제로 새 앱에서도 작동하는 것 같습니다. RunAsInvoker는 정확히 동일한 ACL 토큰을 상속 함을 의미합니다.
SilverbackNet

3

exe관리 권한이 필요한 설정 (설치) 파일 인 경우 높은 액세스 권한없이 파일을 실행하는 트릭이 있습니다.

파일 이름에 windows setup또는 installwindows 와 같은 단어가 포함되어 있으면 높은 액세스가 필요하지 않더라도 높은 액세스로 파일을 강제 실행합니다.

여기에 이미지 설명을 입력하십시오

.exe 파일에 매니페스트가있는 경우 이러한 고도에 대한 추론이 적용되지 않습니다.

이것은 UAC (User Account Control) 문서에 설명되어 있습니다.

설치 관리자 감지는 설치 파일을 감지하여 사용자 모르게 설치가 실행되는 것을 방지합니다.

설치 프로그램 감지는 다음에 만 적용됩니다.

  • 32 비트 실행 파일

  • 요청 된 실행 수준 속성이없는 응용 프로그램

  • UAC가 활성화 된 표준 사용자로 실행되는 대화식 프로세스.

32 비트 프로세스가 작성되기 전에 다음 속성을 점검하여 설치 프로그램인지 판별하십시오.

  • 파일 이름에는 "install", "setup"또는 "update"와 같은 키워드가 포함됩니다.

  • ...

여기에서 읽기 모드 : https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works


2
물론 응용 프로그램 매니페스트가 명시 적으로 지정하지 않은 경우에만 상승으로 실행해야합니다.
다니엘 B

3
@DanielB : 사실이 트릭은 매니페스트가 없을 때만 작동합니다
AntoineL

1
공감. 좋은 관찰. 공식 문서에 대한 링크도 좋습니다.
Denis Nikolaenko

@DenisNikolaenko Ty, 추가 소스 :)
Shayan

1

Andrew는 자신의 질문에 다음과 같은 내용이 효과가 없다고 말했습니다.

실행 파일을 수정하면 매니페스트 (또는 매니페스트 전체를 사용하여 외부 항목을 사용할 수 있음)에서 trustInfo 항목을 제거하여 UAC없이 프로그램을 시작할 수 있습니다. 불행히도 이것은 실행 파일을 수정하므로 내부 체크섬 테스트로 인해 곧 종료됩니다.

사용중인 소프트웨어의 외부 .manifest 파일을 수정하고 변경할 수있었습니다

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

내가 사용하고있는 소프트웨어에는 실제로 관리자 권한이 필요하지 않았으므로 UAC 또는 관리자 암호없이 표준 사용자 계정에서 실행할 수있었습니다. 감사!


매니페스트가 파일에 포함되어 있기 때문에 대신 실행 파일을 편집하는 것이 더 쉬울 수 있습니다. 네임 스페이스 접두사 ms_asmv2:도 생략 될 수 있습니다. 또한 포함 된 xml 블록의 크기를 변경하면 이진 파일이 손상 될 수 있으므로 "requireAdministrator"를 "asInvoker"로 변경하고 uiAccess 앞에 공백이있는 동일한 길이로 채워야합니다.
kdb

-2

프로그램이 포함 된 폴더의 권한을 변경하여이 문제를 해결했습니다.

해당 프로그램을 실행할 각 사용자를 추가하고 "모든 권한"권한을 부여했습니다. 문제를 해결하고 "관리자 권한으로 실행"을 선택하지 않은 상태로 두었습니다.

프로그램을 실행할 사용자에게는 보안 문제가 없습니다.


-5

아니요, 프로그램에 UAC가 필요한 경우 샌드 박스 외부의 무언가에 액세스하려고합니다. 높은 액세스 권한이 없으면 프로그램이 제대로 실행되지 않습니다.

알림을 제거하려는 경우 UAC를 비활성화 할 수 있습니다.

Windows Vista에서 UAC 비활성화 : 시작, "user"를 입력하십시오. "사용자 계정"을 클릭하십시오. 팝업 창에서 "사용자 계정 컨트롤 설정"을 클릭 한 다음 UAC를 끕니다.

Windows 7에서 UAC를 비활성화합니다. 시작, "user"를 입력합니다. "사용자 계정 컨트롤 설정"을 클릭하십시오. 선택 표시 줄을 맨 아래로 끌어 "알림 없음"으로 설정하십시오.


7
UAC를 비활성화하는 것은 달성하려는 것이 아닙니다. 또한 UAC 작동 방식에 대한 설명은 일반적인 의미에서만 정확합니다. 프로그램이 엄격하게 필요하지 않은 경우 UAC를 요청할 수 있습니다. UAC는 프로그램이 시작되기 전에 발생합니다. 일단 실행되면 권한을 넘어 서면 권한 거부 오류가 발생합니다.
Andrew Russell

의미를 제외하고는 특정 프로그램에 대한 UAC 알림을 "비활성화"할 수는 없지만 액세스를 제한합니다.
James Watt

제임스 : 사실-당신이 할 수있는 것 같습니다-나는 내 질문을 업데이트했습니다.
Andrew Russell

프로그램 코드 자체를 수정하는 것보다는 작동하는 솔루션을 찾으면 흥미로울 것입니다.
James Watt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.