pcjames Posted June 6, 2009 Share Posted June 6, 2009 Hi All, I have a quick newbie question... If I have a script for installing programs should I use #RequireAdmin only once at the beginning of the script or should I use it before each program my script installs? Thanks in advance for you help, James Link to comment Share on other sites More sharing options...
Inverted Posted June 7, 2009 Share Posted June 7, 2009 Only once. Link to comment Share on other sites More sharing options...
DCCD Posted June 7, 2009 Share Posted June 7, 2009 #RequireAdmin = UAC = The Manifest = The manifest is an XML resource file, An example manifest file. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> Level 1 asInvoker 2 highestAvailable 3 requireAdministrator [u][font=Arial Black]M[/font]y Blog, AVSS Parts[/u][font=Arial Black]Else[/font][font=Arial Black]L[/font]ibya Linux Users Group Link to comment Share on other sites More sharing options...
pcjames Posted June 7, 2009 Author Share Posted June 7, 2009 @ Inverted, Thanks a bunch, wasn't really sure, the documentation doesn't say either way. #RequireAdmin = UAC = The Manifest = The manifest is an XML resource file, An example manifest file. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> Level 1 asInvoker 2 highestAvailable 3 requireAdministrator@ DCCD, I'm new at autoit and I know that your trying to explain about Vista's UAC but I'm not sure what to do with this information, Could you explain in further detail? Thanks Link to comment Share on other sites More sharing options...
Inverted Posted June 7, 2009 Share Posted June 7, 2009 Vista looks for a xml manifest file. It's either in the same folder as the executable or it can be included in the executable itself in the resources section (that's what AutoIt does) So, #RequireAdmin does that. If I'm wrong someone correct me please. Link to comment Share on other sites More sharing options...
pcjames Posted June 7, 2009 Author Share Posted June 7, 2009 Vista looks for a xml manifest file. It's either in the same folder as the executable or it can be included in the executable itself in the resources section (that's what AutoIt does)So, #RequireAdmin does that.I'm guessing here but If I make a script for Vista in the folder where I have my script and executable I need to include say ????.xml file? If this is correct, does it matter what the .xml file name is? Link to comment Share on other sites More sharing options...
DCCD Posted June 7, 2009 Share Posted June 7, 2009 "#RequireAdmin" put it on top >> you'll get! a. Manifest XML embedded into your application b. Now, your application has been designed with UAC [u][font=Arial Black]M[/font]y Blog, AVSS Parts[/u][font=Arial Black]Else[/font][font=Arial Black]L[/font]ibya Linux Users Group Link to comment Share on other sites More sharing options...
pcjames Posted June 7, 2009 Author Share Posted June 7, 2009 Thanks DCCD, I understand now, when #RequireAdmin is used, Vista will create the Manifest XML and embedded into my application. Sorry for being so ignorant about your first post#RequireAdmin = UAC = The Manifest = The manifest is an XML resource file, An example manifest fileI should of got it with the "=" but I just wanted to make sure!Thanks to both of you for the information! James Link to comment Share on other sites More sharing options...
trancexx Posted June 7, 2009 Share Posted June 7, 2009 Vista looks for a xml manifest file. It's either in the same folder as the executable or it can be included in the executable itself in the resources section (that's what AutoIt does)So, #RequireAdmin does that.If I'm wrong someone correct me please.AutoIt is doing that differently.But you described how AutoIt3Wrapper is doing it. That's nice. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Inverted Posted June 7, 2009 Share Posted June 7, 2009 How is AutoIt doing it ? I was wondering what difference is between #RequireAdmin and that option in AutoItWrapper ... Link to comment Share on other sites More sharing options...
trancexx Posted June 7, 2009 Share Posted June 7, 2009 How is AutoIt doing it ? I was wondering what difference is between #RequireAdmin and that option in AutoItWrapper ...I don't know. But if someone would ask me to speculate or maybe to offer a solution if #RequireAdmin is not existing I would say this: If Not IsAdmin() Then ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"', "", "runas") Else MsgBox(0, @ScriptFullPath, "Admin Rights: " & (IsAdmin() = 1) & @CRLF) EndIf ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
DCCD Posted June 8, 2009 Share Posted June 8, 2009 I don't know. But if someone would ask me to speculate or maybe to offer a solution if #RequireAdmin is not existing I would say this: If Not IsAdmin() Then ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"', "", "runas") Else MsgBox(0, @ScriptFullPath, "Admin Rights: " & (IsAdmin() = 1) & @CRLF) EndIf i like it, Add a UAC shield to a button, I added a key "Test" to HKEY_LOCAL_MACHINE\SOFTWARE\ ======= #include <GUIConstants.au3> GUICreate("Under Vista") ; will create a dialog box that when displayed is centered Opt("GUICoordMode",2) $Button_1 = GUICtrlCreateButton ("Run As Admin", 10, 30, 100) $Button_2 = GUICtrlCreateButton ( "RegWrite", 0, -1) GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_1 ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"', "", "runas") ;Exit Case $msg = $Button_2 $eee= RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", "Hello this is a test") if $eee = 1 Then MsgBox(0, 'Testing', 'Success') Else MsgBox(0, 'Testing', 'Failure') EndIf EndSelect Wend [u][font=Arial Black]M[/font]y Blog, AVSS Parts[/u][font=Arial Black]Else[/font][font=Arial Black]L[/font]ibya Linux Users Group Link to comment Share on other sites More sharing options...
trancexx Posted June 8, 2009 Share Posted June 8, 2009 i like it, Add a UAC shield to a button, I added a key "Test" to HKEY_LOCAL_MACHINE\SOFTWARE\ ======= #include <GUIConstants.au3> GUICreate("Under Vista") ; will create a dialog box that when displayed is centered Opt("GUICoordMode",2) $Button_1 = GUICtrlCreateButton ("Run As Admin", 10, 30, 100) $Button_2 = GUICtrlCreateButton ( "RegWrite", 0, -1) GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_1 ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"', "", "runas") ;Exit Case $msg = $Button_2 $eee= RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", "Hello this is a test") if $eee = 1 Then MsgBox(0, 'Testing', 'Success') Else MsgBox(0, 'Testing', 'Failure') EndIf EndSelect WendYou can do that even cooler. I added button 3: #include <GUIConstants.au3> GUICreate("Under Vista"); will create a dialog box that when displayed is centered Opt("GUICoordMode", 2) $Button_1 = GUICtrlCreateButton("Run As Admin", 10, 30, 100) $Button_2 = GUICtrlCreateButton("RegWrite", 0, -1) $Button_3 = GUICtrlCreateButton("RegWriteFromHere", 0, -1) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_1 ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"', "", "runas") ;Exit Case $msg = $Button_2 $eee = RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", "Hello this is a test") If $eee = 1 Then MsgBox(0, 'Testing', 'Success') Else MsgBox(0, 'Testing', 'Failure') EndIf Case $msg = $Button_3 ShellExecuteWait(@AutoItExe, '/AutoIt3ExecuteLine "RegWrite(''HKEY_LOCAL_MACHINE\SOFTWARE\Test'', ''TestKey2'', ''REG_SZ'', ''Hello this is a test'')"', "", "runas") EndSelect WEnd ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
ProgAndy Posted June 8, 2009 Share Posted June 8, 2009 (edited) The UAC shield can be controlled with those SendMessage-Calls: (MSDN)#include<ButtonConstants.au3> GUICtrlSendMsg($idButton, $BCM_SETSHIELD, 0, True) ; Activate UAC shield GUICtrlSendMsg($idButton, $BCM_SETSHIELD, 0, False) ; Deactivate UAC shield Edited June 8, 2009 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
Richard Robertson Posted June 8, 2009 Share Posted June 8, 2009 #RequireAdmin does not add any kind of tag to the executable. It just has the interpreter check to see if it has admin powers and if not, runs the script again. It's not as fancy as you make it out to be. Link to comment Share on other sites More sharing options...
Inverted Posted June 8, 2009 Share Posted June 8, 2009 #RequireAdmin does not add any kind of tag to the executable. It just has the interpreter check to see if it has admin powers and if not, runs the script again. It's not as fancy as you make it out to be.Ok, then like trancexxx already said, I was describing how #AutoIt3Wrapper works. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now