どうするかどうかを検知VistaのUACが有効になっていますか?

StackOverflow https://stackoverflow.com/questions/95510

  •  01-07-2019
  •  | 
  •  

質問

い私の申請により異なる動作をするかどうかVistaでUACを有効にします。どのように自分を検出する状態のUACユーザーのコンピューター?

役に立ちましたか?

解決

このレジストリキーに聞いてください

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

EnableLUA (DWORD)

1 有効/ 0 または無効に

が想定しての権利を読みます。

プログラムで読み込み、ユーザーのトークンをもうとしている場合で管理走UACを有効に参照 こちらの).なfoolproof場合があります。

この領域で最も大事な問題は、なぜ必要なのか"-その答えになります。本当に、ありませんAPIでは、OSの動作、その場合、ユーザーが管理者などから身を守るために、管理者はその問題です。

他のヒント

このポスト は、サンプルマネージC#コードで記述試験場合にUACは、現在のアプリに与えられてい高い。ダウンロードできますコードとして解釈します。またリンクがサンプルを示すのと同じで、C++

http://www.itwriting.com/blog/198-c-code-to-detect-uac-elevation-on-vista.html

のコードを公開しているなから読み取られます。場合にUACが有効のチャンスがない可能性があります権利を読み取ることから、レジストリ

んでチェックしたい場合にUACが有効ないものです。

できることができるのでユーザーのUAC無効になります。

確認したい 場合、ユーザーが管理権限のある利用 CheckTokenMembership:

///This function tells us if we're running with administrative permissions.
function IsUserAdmin: Boolean;
var
    b: BOOL;
    AdministratorsGroup: PSID;
begin
    {
        This function returns true if you are currently running with 
               admin privileges.
        In Vista and later, if you are non-elevated, this function will 
               return false (you are not running with administrative privileges).
        If you *are* running elevated, then IsUserAdmin will return 
               true, as you are running with admin privileges.

        Windows provides this similar function in Shell32.IsUserAnAdmin.
               But the function is depricated, and this code is lifted from the 
               docs for CheckTokenMembership: 
               http://msdn.microsoft.com/en-us/library/aa376389.aspx
    }

    {
        Routine Description: This routine returns TRUE if the caller's
        process is a member of the Administrators local group. Caller is NOT
        expected to be impersonating anyone and is expected to be able to
        open its own process and process token.
        Arguments: None.
        Return Value:
            TRUE - Caller has Administrators local group.
            FALSE - Caller does not have Administrators local group.
    }
    b := AllocateAndInitializeSid(
            SECURITY_NT_AUTHORITY,
            2, //2 sub-authorities
            SECURITY_BUILTIN_DOMAIN_RID,    //sub-authority 0
            DOMAIN_ALIAS_RID_ADMINS,        //sub-authority 1
            0, 0, 0, 0, 0, 0,               //sub-authorities 2-7 not passed
            AdministratorsGroup);
    if (b) then
    begin
        if not CheckTokenMembership(0, AdministratorsGroup, b) then
         b := False;
        FreeSid(AdministratorsGroup);
    end;

    Result := b;
end;

できるかを検討するDWORD値 EnableLUA 以下のレジストリキー:

HKLM/ソフトウェア/マイクロソフト/Windows/CurrentVersion/政策システム

値が0の場合(または存在しない)そのUACがOFFになります。の場合は現在、非ゼロのUACは:

BOOL IsUacEnabled( )
{
    LPCTSTR pszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
    LPCTSTR pszValue = _T("EnableLUA");
    DWORD dwType = 0;
    DWORD dwValue = 0;
    DWORD dwValueSize = sizeof( DWORD );

    if ( ERROR_SUCCESS != SHGetValue( HKEY_LOCAL_MACHINE, pszSubKey, pszValueOn, 
        &dwType, &dwValue, &dwValueSize) )
    {
            return FALSE;
    }

    return dwValue != 0;
} 

注意した場合には、ユーザーの状態のUACがいないを再起動したコンピュータしかし、この機能に戻りま矛盾した結果です。

チェックのためのレジストリ値HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\政策\システム

のEnableLUA値る場合はtrue、そうでない場合はfalse UACを有効にします。

"海のそばのシェアハウスでは古いがたかったのはなぜ必要なのか"、"チェックインのトークン会員"ですね。

実はマイクロソフトが非常に自身の文書によると"場合はユーザーアカウントコントロールがoffした、標準ユーザーの試みる事務を遂行することに対して必要とする標高を提供するエラーの代わりに表示ボタンやリンクのUACシールドする試みる。見 http://msdn.microsoft.com/en-us/library/windows/desktop/aa511445.aspx 下の方になっています。

どうしてこないかをチェックUACが有効になっていますか?

うかをチェックのユーザーが管理権限のあとは自分がすべきことなのだというこのインスタンスがjava最新にしたら遊べなくなった指導に対するMicrosoftえ、 ,印ない場合だけでなんとも混乱している。

のための誰もがこの要望していることから、VBScriptます。こちらはなんといって検出する場合にUACが有効な場合はキラキラと輝くクリプトと特典をご利用いただけます。投入するだけで、簡単にコードを本体がなくなります。この問題もあったとの輸送が可能とXP、Windows7の場合に書いたコードを常に開始するものではあこの方法を用いたバイパスは、標高がない場合UAC.も考慮2008年以上サーババージョンとしてのUACを有効にします。

On Error Resume Next
UACPath = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA"
Dim WshShell
Set WshShell = CreateObject("wscript.Shell")
UACValue = WshShell.RegRead(UACPath)
If UACValue = 1 Then
'Run Elevated
    If WScript.Arguments.length =0 Then
      Set objShell = CreateObject("Shell.Application")
      'Pass a bogus argument with leading blank space, say [ uac]
      objShell.ShellExecute "wscript.exe", Chr(34) & _
      WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
      WScript.Quit
    Else 
        Body()
    End If
Else
Body()
End If

Function Body()
MsgBox "This is the body of the script"
End Function

AFAIK,UACはapolicy設定のユーザまたはグループいますから。います。申し訳ないの詳細が武器agiは、dexで下がらないboxerぐ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top