Jump to content
Sign in to follow this  
Iznogoud

Extend the functionality of the Context Menu

Recommended Posts

Iznogoud

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
Iznogoud

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
Iznogoud

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  

×