Modify

Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#3868 closed Bug (Fixed)

Directive #RequireAdmin can suppress ConsoleWrite/ConsoleWriteError output.

Reported by: OJBakker Owned by: Jos
Milestone: Component: SciTE4AutoIt
Version: Other Severity: None
Keywords: Cc:

Description

When this script is run in Scite:
UAC-elevation prompt appears
The IsAdmin in the script reports True, so the scripts runs elevated.
The log reports nothing about elevating the script.
The ConsoleWrite/ConsoleWriteErrror messages do nog appear in the log.

Script:

#RequireAdmin ; This script requires full Administrative rights

Main()
Exit

Func Main()
        If IsAdmin() then MsgBox(Default, Default, "Admin is true")
        ConsoleWrite("Normal output" & @CRLF)
        ConsoleWriteError("Error output" & @CRLF)
EndFunc

Scite output:

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Programs\AutoIt-Bugs\TestAdmin.au3" /UserParams    
+>10:52:13 Starting AutoIt3Wrapper (21.316.1639.1) from:SciTE.exe (4.4.6.0)  Keyboard:00020409  OS:WIN_10/2009  CPU:X64 OS:X64  Environment(Language:0413)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\BakkerSSDpc\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\BakkerSSDpc\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.16.0)  from:C:\Program Files (x86)\AutoIt3  input:C:\Programs\AutoIt-Bugs\TestAdmin.au3
+>10:52:13 AU3Check ended.rc:0
>Running:(3.3.16.0):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Programs\AutoIt-Bugs\TestAdmin.au3"    
+>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+BREAK to Stop.
+>10:52:14 AutoIt3.exe ended.rc:0
+>10:52:15 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 2.236

End-of-line comment after the directive #RequireAdmin suppresses consolewrite() and consoleerror() output.
The script runs with admin-rights and the script functions normal except for the output of consolewrite() and consoleError()
It seems that (almost) everything after the #RequireAdmin causes this behavior.
With just trailing spaces the consolewrite output is visible.

other examples that fail:
#RequireAdmin #cs
#RequireAdmin #cs #ce
#RequireAdmin_
#RequireAdmin _

Additional remark: The #cs/#ce examples also confuse the syntax highlighter.

Attachments (0)

Change History (7)

comment:1 Changed 3 years ago by mLipok

  • Component changed from AutoIt to SciTE4AutoIt
  • Owner set to Jos
  • Status changed from new to assigned
  • Version changed from 3.3.16.0 to Other

comment:2 Changed 3 years ago by mLipok

Strange.
If you take look on:
https://www.autoitscript.com/autoit3/scite/download/beta_SciTE4AutoIt3/History.html

It was added as a new feature at: 2-1-2019

   - 18.708.1148.4 Added logic to be able to display Console Output of script that have #RequireAdmin while SciTE runs at normal level.

So this should work.
I'm investigating as it still works on my other scripts, but as you stated this is related to the comment after RequireAdmin

Smallest repro

#RequireAdmin ; some comment
ConsoleWrite("Normal output" & @CRLF) ; NOT WORKS because of used comment after #RequireAdmin
ConsoleWriteError("Error output" & @CRLF) ; NOT WORKS because of used comment after #RequireAdmin
Last edited 3 years ago by mLipok (previous) (diff)

comment:3 Changed 3 years ago by mLipok

Take a look on AutoIt3Wrapper.au3:

There is:

; Show Consolemessage about running a script that required elevated rights not displaying anuy console messages
If $Option = "Run" And $I_Rec = "#RequireAdmin" And Not IsAdmin() Then
        $Shell_RQA_Diff = 1
EndIf

Check if this following change, fix this issue:

; Show Consolemessage about running a script that required elevated rights not displaying anuy console messages
If $Option = "Run" And StringLeft($I_Rec, StringLen("#RequireAdmin")) = "#RequireAdmin" And Not IsAdmin() Then
        $Shell_RQA_Diff = 1
EndIf

btw.
Jos is the maintainer of AutoIt3Wrapper.au3 so he will decide how it will be fixed at the end.

Last edited 3 years ago by mLipok (previous) (diff)

comment:4 Changed 3 years ago by Jos

  • Resolution set to Fixed
  • Status changed from assigned to closed

It is now solved in the current Beta. ;)

comment:5 follow-up: Changed 3 years ago by anonymous

Thanks for the quick respons and solution.
The change suggested by mLipok solves the ConsoleWrite problem.
What remains is the minor problem of confused syntax highlighting.
'#RequireAdmin #cs' makes the whole script seem to be comment.
'#RequireAdmin #cs #ce' seems to reverse code to comment and comment to code.
The script runs without problems so this is just visual weirdness but easy to solve when it happens.

comment:6 in reply to: ↑ 5 Changed 3 years ago by Jos

Replying to anonymous:

Thanks for the quick respons and solution.
The change suggested by mLipok solves the ConsoleWrite problem.

Something similar is implemented in the current Beta, but preferred to use StringRegEx(). ;)
Replying to anonymous:

What remains is the minor problem of confused syntax highlighting.
'#RequireAdmin #cs' makes the whole script seem to be comment.
'#RequireAdmin #cs #ce' seems to reverse code to comment and comment to code.
The script runs without problems so this is just visual weirdness but easy to solve when it happens.

I will have a look at that one too, but it's a totally separate "bug" in the SciLexer source for au3. ;)

As for the variations of #RequireAdmin you listed: AutoIt3 just looks for the starting characters "#RequireAdmin" after removing the whitespace and doesn't consider any extra characters after it. That is the way Directives are implemented... One Directive per line at the start.
This also means that the SciLexer really should ignore #cs after any previous directive on that line.

Groet, Jos

Last edited 3 years ago by Jos (previous) (diff)

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

Action
as closed The owner will remain Jos.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.