3
로컬 사용자로 실행되는 응용 프로그램에 대해 관리자 권한으로 실행을 비활성화 할 수 있습니까?응용 프로그램을 관리자 권한으로 실행하지 못하도록 설정하는 방법
로컬 사용자로 실행되는 응용 프로그램에 대해 관리자 권한으로 실행을 비활성화 할 수 있습니까?응용 프로그램을 관리자 권한으로 실행하지 못하도록 설정하는 방법
관리자로 프로세스를 시작할 수 있다고 생각하지 않습니다. 그러나 상승 된 권한으로 실행 중인지 확인할 수 있으며이 경우 종료 할 수 있습니다.
static bool IsRunningWithElevatedPrivileges()
{
IntPtr hToken;
int sizeofTokenElevationType = Marshal.SizeOf(typeof(int));
IntPtr pElevationType =
Marshal.AllocHGlobal(sizeofTokenElevationType);
if (OpenProcessToken(GetCurrentProcess(), TokenQuery, out hToken))
{
uint dwSize;
if (GetTokenInformation(hToken,
TokenInformationClass.TokenElevationType, pElevationType,
(uint)sizeofTokenElevationType, out dwSize))
{
TokenElevationType elevationType = (TokenElevationType)Marshal.ReadInt32(pElevationType);
Marshal.FreeHGlobal(pElevationType);
switch (elevationType)
{
case TokenElevationType.TokenElevationTypeFull:
return true;
default:
//case TokenElevationType.TokenElevationTypeLimited:
//case TokenElevationType.TokenElevationTypeDefault:
return false;
}
}
}
return false;
}
[DllImport("kernel32.dll")]
static extern IntPtr GetCurrentProcess();
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool OpenProcessToken(
IntPtr processHandle,
uint desiredAccess,
out IntPtr tokenHandle);
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool GetTokenInformation(
IntPtr tokenHandle,
TokenInformationClass tokenInformationClass,
IntPtr tokenInformation,
uint tokenInformationLength,
out uint returnLength);
const UInt32 TokenQuery = 0x0008;
enum TokenElevationType
{
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited
}
enum TokenInformationClass
{
TokenUser = 1,
TokenGroups,
TokenPrivileges,
TokenOwner,
TokenPrimaryGroup,
TokenDefaultDacl,
TokenSource,
TokenType,
TokenImpersonationLevel,
TokenStatistics,
TokenRestrictedSids,
TokenSessionId,
TokenGroupsAndPrivileges,
TokenSessionReference,
TokenSandBoxInert,
TokenAuditPolicy,
TokenOrigin,
TokenElevationType,
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
MaxTokenInfoClass
}
@elyashiv이 질문에 대한 태그로 UAC를 지원하는 다른 Windows 버전이 없으므로 Windows Vista 또는 Windows 7 중 하나 또는 둘 모두처럼 보입니다. –
이 [질문]보세요 (http://stackoverflow.com/questions/2051415/how-to-launch-an-exe-at-user-level-from-a-higher-level?rq=1) – Steve
실행중인 사용자가 관리자 그룹에 있으면 종료하십시오. –