Jump to content
Sign in to follow this  

Cant reat desktop icons placement with runas

Recommended Posts


I am trying to save icons placement on desktop to conf file but problem is that when I use runas to run my exe under diferent user, then it wont write anything in conf file. I also found that if i run it under current user, it can save desktop icon locations to conf file with out problem.

Any ideas how to make that exe work with runas? or why it dont work with other user?

I am running following code under SYSTEM.

it gets the nr of icons but not names

If I run it under "User" then it can read icon names but it don't have permission to write file on disk.

#include <GuiListView.au3>

Global $sConfig_Name

Opt("WinTitleMatchMode", 3)
Opt("TrayIconHide", 1)

Func _Save_Config()
    $sConfig_Name = @scriptdir & "\desktopconf.conf"
EndFunc   ;==>_Save_Config

Func _Save_Locations_Desktop()
    _Write_Locations(ControlGetHandle("Program Manager", "", "SysListView321"))
EndFunc   ;==>_Save_Locations_Desktop

Func _Write_Locations($hExplorer_List)
    For $i = 0 To _GUICtrlListView_GetItemCount($hExplorer_List) - 1
        Local $sKey_Name = _GUICtrlListView_GetItemText($hExplorer_List, $i)
        Local $aPos = _GUICtrlListView_GetItemPosition($hExplorer_List, $i)
        Local $sValue_Pos = $aPos[0] & ":" & $aPos[1]
        IniWrite($sConfig_Name, "Desktop", $sKey_Name, $sValue_Pos)
EndFunc   ;==>_Write_Locations

Func _Restore_Config()
    $sConfig_Name = @ScriptDir & "\desktopconf.conf"
    _Set_Positions(ControlGetHandle("Program Manager", "", "SysListView321"))
EndFunc   ;==>_Restore_Config

Func _Set_Positions($hExplorer_List)
    For $i = 0 To _GUICtrlListView_GetItemCount($hExplorer_List) - 1
        _GUICtrlListView_SetItemPosition($hExplorer_List, $i, @DesktopWidth, @DesktopHeight + 100 * $i)
    For $i = 0 To _GUICtrlListView_GetItemCount($hExplorer_List) - 1
        Local $sIcon_Name = _GUICtrlListView_GetItemText($hExplorer_List, $i)
        Local $sPos_Saved = IniRead($sConfig_Name, "Desktop", $sIcon_Name, "")
        If $sPos_Saved <> "" Then
            Local $aPos = StringSplit($sPos_Saved, ":")
            _GUICtrlListView_SetItemPosition($hExplorer_List, $i, $aPos[1], $aPos[2])
EndFunc   ;==>_Set_Positions


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