romulocarlos

How to detect Windows 10 Anniversary Edition?

4 posts in this topic

Hello.

I'm building a script to install some windows updates with a GUI. For this, the script need to know witch windows version to work: Windows 7, Windows 7 SP1, Windows 8, Windows 8.1 and so on. I read this article, but it don't list Windows 10 Anniversary Edition. So, I run into build version, because they are different between them.  The first is 10586, and Anniversary is 14393.

So, somewhere on my script I have this:

If @OSVersion = 'win_10' Then
    $versao_windows = 'Windows 10'
ElseIf @OSVersion = 'win_10' And @OSBuild = 14393 Then
    $versao_windows = 'Windows 10 Edição De Aniversário'
    $win10ae = 1
EndIf

As you see, "$versao_windows" is the "friendly" name to be showed on the GUI, and "$win10ae" will be the variable to be used to distinguish the windows version to use. But the script still showing the 'normal' Windows 10 version, even if it is running on Anniversary Edition. On the status bar, it rightly shows the 14393 build, but don't shows "Windows 10 Edição De Aniversário".

I need this to install the correct updates, because they are different from one build to another.

Where I'm wrong on my code?

Thanks in advice!


 

Share this post


Link to post
Share on other sites



9 minutes ago, romulocarlos said:

Where I'm wrong on my code?

May at a other place, the snipet ic correct. Make a runable (reproducer) script, showing your issue(s).

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

I think your approach with if statement (as it stands) isn't using the best logic.  I suspect since the first condition is true, the rest does not process.

This is how I would do it: check the windows version first, then evaluate subversion.

;crude example
If @OSVersion = "WIN_10" Then
    $versao_windows = 'Windows 10'
    If @OSBuild = 14393 Then 
        $versao_windows &= "  Edição De Aniversário"
        $win10ae = 1
    EndIf
EndIf


edit: just a demo further demonstrate why your logic doesn't work:

$iValueA = 1
$iValueB = 1

If $iValueA = 1 Then
    $sTest = "$iValue = 1"
ElseIf $iValueA = 1 And $iValueB = 1 Then
    $sTest = "$iValue = 1 And $iValueB = 1"
EndIf
msgbox(0,"First demo Result",$sTest)

If $iValueA = 1 Then
    $sTest = "$iValueA = 1"
    If $iValueB = 1 Then
        $sTest &= " And $iValueB = 1"
    EndIf
EndIf
msgbox(0,"Second demo Result",$sTest)


 

Edited by spudw2k
1 person likes this

Share this post


Link to post
Share on other sites

Nevermind, solved.

I change the lines with

ElseIf @OSVersion = 'win_10' And @OSArch = 'x64' And @OSBuild < '11000'  Then

for normal version, and 

ElseIf @OSVersion = 'win_10' And @OSArch = 'x64' And @OSBuild > '11000'  Then

for Anniversary Edition.

Is detecting fine, now.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • nacerbaaziz
      By nacerbaaziz
      Hi dear
      I have a question
      about the display language of the system
      How can I get the current display language and how can I change it by autoit
      Of course, if this is possible
      Greetings to all and hope you help me
    • breakbadsp
      By breakbadsp
      AutoIT AU3info doeas not detect all gui objects uniquely for .NET GUIs developed in C#.
      this is not working now i am using COM windows approach for this, But its very difficult.
      Please let me know if anyone has done it before.
    • ur
      By ur
      With _WinWaitActivate we can wait for a window to process it.
      But is there any logic so that we can wait for this window title and based on the window text (like 2 or more patterns will be there) we can click yes or no on the window.
       
      Func _WinWaitActivate($title,$text,$timeout=0)
       WinWait($title,$text,$timeout)
       If Not WinActive($title,$text) Then WinActivate($title,$text)
       WinWaitActive($title,$text,$timeout)
      EndFunc
    • wtarkan
      By wtarkan
      If I create a service to run a program , Application window cannot Appear - How can I make the App window visible
    • ur
      By ur
      Whenever we try to access a network share it will prompt for credentials based on the shared folder settings.
      Like the below prompt


      Once you save them, they are saved in Windows Credentials of Credentials Manager in Control panel (run --> control keymgr.dll).

       
      But not able to found exact file or registry for this setting.
       
      So, can anyone suggest how to do this process of adding network credentials using AutoIT.