2012-08-31 2 views
1

좋아요, 저는 시각적 인 기본으로 놀고 있어요. xD에서 시작하는 데 지옥이있는 것 같습니다. 어쨌든 다음과 같은 오류가 발생하는 이유를 모르겠습니다.변수가 선언 된 것으로 감지되지 않았습니다.

UACLevel_Level is not declared. It may be inaccessible due to its protection 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) 

답변

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 
5

UACLevel_LevelIf 블록 내에서 선언된다. 코드 블록 내에서 선언 된 변수는 해당 블록에서만 볼 수 있습니다.

VB6/VBA와 다른 점입니다. VB6/VBA에서 블록 외부에서 볼 수 있습니다 (5 번 선언하기 때문에 다중 선언 오류가 발생합니다).

블록 If 블록 외부에 UACLevel_Level을 선언하고 If 블록에 값만 지정하십시오.

나중에 참조 할 수 있도록 Scope in Visual Basic을 참조하십시오.

+0

감사합니다. 조금 놀았지만 감사합니다. – user1451070

+0

@ user1451070 응용 프로그램 인 콘솔 창을 숨기는 것을 의미합니까? 프로그램의 바로 가기를 만들어 바로 가기에 숨김으로 설정하면되지만 메시지 상자를 표시하는 것이 목표라면 먼저 콘솔 응용 프로그램을 만들지 않아야합니다. 새 창 폼 프로젝트 만들기, 모듈 만들기, 코드를 붙여 넣기, 프로젝트 속성, 응용 프로그램 탭으로 이동, "응용 프로그램 프레임 워크 사용"을 선택하고 "Startup 개체"에 대해 "Sub Main"을 선택하고 닫기 및 설정 저장, 삭제 Form1 폼을 컴파일하십시오. – GSerg