Sign in to follow this  
Followers 0
Iznogoud

Extend the functionality of the Context Menu

3 posts in this topic

#1 ·  Posted (edited)

Does anyone know a good way to use an AutoIT written executable in combination with this feature of the right mouse button.

I have written a code wich sets some permissions to a specific folder with the following files: RMTShare and CACLS.exe.

Part of my code:

Run(@ComSpec & " /c " & "RMTSHARE \\TestServer\" & $User &"$=" & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /GRANT " & $User &":F /GRANT ""Domeinadministrators"":F /REMARK:""HomeDirectory van " & $User & """", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /R Gebruikers", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /R ""Maker Eigenaar""", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /R System", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /R Administrators", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /G " & $User &":R", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /G " & $User &":W", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /G " & $User &":C", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "cacls " & EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" /T /E /G Domeinadministrators:F", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "echo Homedirectory for " & $User & " has been created >> C:\Log.txt", "", @SW_HIDE)

As you see is the EnvGet("InputHomeLocation") & "HomeDirectory\" & $User &" part the variable.

Is it possible to combine with this option described in the link below?

http://www.petri.co.il/add_command_prompt_...ws_explorer.htm

What i want to do is creating a script wich sets permission on a specific folder when a customer is right clicking on a folder and click an option Set Permissions for an example.

Wich than will kick in the script and set the permissions to that specific folder.

I think i would be something like using the %1 part of the link above, but i am not a pro programma, just a beginner.

Could someone help me push me in the correct direction?

Edited by Iznogoud

Share this post


Link to post
Share on other sites



Forget the story i solved it myself by just trial and error method.

$location = MsgBox("", "Test", $CmdLineRaw)

This does the job for me, don't know if this is the best way?

Share this post


Link to post
Share on other sites

One question left about my code i have written, first i will show you my code:

Opt("TrayIconDebug", 1)

#include <GUIConstants.au3>

; *************************************************************************************
;                                     Creating a list of Users
;                                     Example list: 
;                                     "User1"
;                                     "User3"
;                                     "User4"
; *************************************************************************************

$Userlist = RunWait(@ComSpec & " /c dsquery user ou=Klanten,dc=Test,dc=local -o samid > C:\UsersTemp.txt", @SystemDir, @SW_HIDE)
$Medewerkers=""
; *************************************************************************************
;                                     Checking files
; *************************************************************************************

$USersTemp = FileOpen("C:\USersTemp.txt", 0)
$Users = FileOpen("C:\USers.txt", 2)

If $USersTemp = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf


If $Users = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf

; *************************************************************************************
;                                     Transforming Userlist to unquoted
;                                     Example list after it is unquoted: 
;                                     User1
;                                     User3
;                                     User4
; *************************************************************************************

While 1
    $line = FileReadLine($UsersTemp)
    If @error = -1 Then ExitLoop
        $linepart1 = StringTrimLeft($line, 1)   
        $linepart2 = StringTrimRight($linepart1, 1)

        FileWrite($Users, $linepart2 & @CRLF)

Wend

; *************************************************************************************
;                                     Closing Files
; *************************************************************************************

FileClose($UsersTemp)
FileClose($Users)


; *************************************************************************************
;                                     Creating correct input for ComboBox
; *************************************************************************************

$Gebruikers = FileOpen("C:\Users.txt", 0)
If $Gebruikers = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf


While 1
    $Wline = FileReadLine($Gebruikers)
        If @error = -1 Then ExitLoop
    $Medewerkers = $Medewerkers & "|" & $Wline
WEnd
    
FileClose($Gebruikers)

; *************************************************************************************
;                                     Creating GUI
; *************************************************************************************


GUICreate("My GUI combo")  

; *************************************************************************************
;                                     Filling ComboBox with actual list of users
; *************************************************************************************


GUICtrlCreateCombo ("item1", 10,10) 
GUICtrlSetData(-1,$Medewerkers,"")

GUISetState ()


While 1
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

What i was wondering is there an easier way to do this?

I know this code is working now, but does it keep working or could i make adjustments so it works better in the feature?

Just a question to learn more about AutoIT in combination with Strings, Arrays, etc.

I have written this code by meself and this code i understand so hopefully if there are suggested adjustments i could understand them, because this script is so simple for the most of you i think.

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
Sign in to follow this  
Followers 0