1

了解しました。VisualBasicで遊んでいて、xDを使い始めるのにかなりの時間がかかっているようです。とにかく、なぜ次のエラーが発生するのかわかりません。

UACLevel_Level宣言されていません。保護レベルが原因でアクセスできない場合があります。

小さなヘルプアイコンをクリックしてみましたが、何も表示されませんでした。

Dim ConsentPromptBehaviorAdmin = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", Nothing)
Dim EnableLUA = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", Nothing)
Dim PromptOnSecureDesktop = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", Nothing)
Dim UACLevel_Value = ConsentPromptBehaviorAdmin + EnableLUA + PromptOnSecureDesktop
If UACLevel_Value = 0 Then
    Dim UACLevel_Level = "Never notify me."
ElseIf UACLevel_Value = 6 Then
    Dim UACLevel_Level = "Notify me only when programs try to make changes to my computer(do not dim desktop)."
ElseIf UACLevel_Value = 7 Then
    Dim UACLevel_Level = "Default - Notify me only when programs try to make changes to my computer."
ElseIf UACLevel_Value = 4 Then
    Dim UACLevel_Level = "Always Notify Me"
Else
    Dim UACLevel_Level = "Customized UAC Level"
End If
MsgBox("UACLevel is " & UACLevel_Value & ": " & UACLevel_Level)
4

2 に答える 2

5

UACLevel_LevelIfブロック内で宣言されています。コード ブロック内で宣言された変数は、そのブロックからのみ表示されます。

これは VB6/VBA とは異なります。VB6/VBA では、ブロックの外に表示されます (その時点で、5 回宣言するため、複数の宣言エラーが発生します)。

UACLevel_Levelブロックの外側で宣言し、Ifブロック内でのみ値を割り当てIfます。

今後の参考のために、Visual Basic のスコープを参照してください。

于 2012-08-31T07:22:35.540 に答える
0

興味のある人のために、最終結果は次のとおりです。

Module Module1

    Sub Main()
        Dim ConsentPromptBehaviorAdmin = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", Nothing)
        Dim EnableLUA = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", Nothing)
        Dim PromptOnSecureDesktop = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", Nothing)
        Dim UACLevel_Value = ConsentPromptBehaviorAdmin + EnableLUA + PromptOnSecureDesktop
        Dim UACLevel_level As String
        If UACLevel_Value = 0 Then
            UACLevel_level = "Never notify me."
        ElseIf UACLevel_Value = 6 Then
            UACLevel_level = "Notify me only when programs try to make changes to my computer(do not dim desktop)."
        ElseIf UACLevel_Value = 7 Then
            UACLevel_level = "Default - Notify me only when programs try to make changes to my computer."
        ElseIf UACLevel_Value = 4 Then
            UACLevel_level = "Always Notify Me"
        Else
            UACLevel_level = "Customized UAC Level"
        End If
        MsgBox("UACLevel is " & UACLevel_Value & ": " & UACLevel_Level)

    End Sub

End Module
于 2012-08-31T09:21:13.900 に答える