Ich weiß nicht warum?

  • Hi Leute!

    Bastel gerade an ein kleinen SchnellStarter, ich steck in einem prozess fest, ich brauche Adminrechte um in die Regestratur Win7 x64 zu schreiben habe in mein Script eine Func eingebunden die dann nicht mehr Funktioniert.

    Das Script ist so aufgebaut das man die Datei per drag & drop auf die Gui fallen lassen kann das, ergebnis wird in einem Listview angezeigt die Funktione arbeitet nur wenn keine Adminrechte vergeben sind????

    Mach ich was falsch ( Denkfehler) mmmmh....

    Spoiler anzeigen
    [autoit]

    ;#RequireAdmin
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Const $WM_DROPFILES = 0x233
    Global $Form[3]
    Local $aDropFiles[1]
    Local $ListView, $hListView, $Contextmenu, $Contextmenuitem[13]
    Local $Key = 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run'
    Local $Name = 'ASManager'
    Local $Type = 'REG_SZ'

    [/autoit] [autoit][/autoit] [autoit]

    $Form[0] = GUICreate('Start Manager', 400, 300, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_ACCEPTFILES))
    GUISetBkColor(0xFFFACD, $Form[0])
    GUISetOnEvent(-3, 'E')

    [/autoit] [autoit][/autoit] [autoit]

    $ListView = GUICtrlCreateListView('', 5, 5, 390, 290, Default, $WS_EX_CLIENTEDGE)
    $hListView = GUICtrlGetHandle($ListView)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    _GUICtrlListView_InsertColumn($hListView, 0, 'Datei', 50)
    _GUICtrlListView_InsertColumn($hListView, 1, 'Pfad', 340)

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu = GUICtrlCreateContextMenu($ListView)

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenuitem[0] = GUICtrlCreateMenu('Einstellung', $Contextmenu)
    $Contextmenuitem[1] = GUICtrlCreateMenuItem('Mit Windows Starten', $Contextmenuitem[0])
    GUICtrlSetOnEvent(-1, 'Bearbeiten')
    $Contextmenuitem[2] = GUICtrlCreateMenuItem('Autostarteintrag Löschen', $Contextmenuitem[0])
    GUICtrlSetOnEvent(-1, 'Bearbeiten')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenuitem[3] = GUICtrlCreateMenu('Öffnen', $Contextmenu)
    $Contextmenuitem[4] = GUICtrlCreateMenuItem('Starten', $Contextmenuitem[3])
    GUICtrlSetOnEvent(-1, '')
    $Contextmenuitem[5] = GUICtrlCreateMenuItem('Alle Starten', $Contextmenuitem[3])
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenuitem[6] = GUICtrlCreateMenu('Beenden', $Contextmenu)
    $Contextmenuitem[7] = GUICtrlCreateMenuItem('Schlissen', $Contextmenuitem[6])
    GUICtrlSetOnEvent(-1, '')
    $Contextmenuitem[8] = GUICtrlCreateMenuItem('Alle Schlissen', $Contextmenuitem[6])
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenuitem[9] = GUICtrlCreateMenu('Löschen', $Contextmenu)
    $Contextmenuitem[10] = GUICtrlCreateMenuItem('Löschen', $Contextmenuitem[9])
    GUICtrlSetOnEvent(-1, '')
    $Contextmenuitem[11] = GUICtrlCreateMenuItem('Alle Löschen', $Contextmenuitem[9])
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenuitem[12] = GUICtrlCreateMenuItem('Exit', $Contextmenu)
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')

    [/autoit] [autoit][/autoit] [autoit]

    Func Bearbeiten()
    If (@GUI_CtrlId = $Contextmenuitem[1]) Or (@GUI_CtrlId = $Contextmenuitem[2]) Then
    Dim $HKEY, $KeyPath
    If (@OSArch = 'x64') Then
    $KeyPath = StringRight($Key, StringLen($Key) - StringInStr($Key, '\'))
    $HKEY = StringLeft($Key, StringInStr($Key, '\') - 1)
    $HKEY &= '64\' & $KeyPath
    Else
    $HKEY = $Key
    EndIf
    EndIf
    Switch @GUI_CtrlId
    Case $Contextmenuitem[1]
    If (RegWrite($HKEY, $Name, $Type, @ScriptDir & '\StartManager.exe') = 1) Then Return MsgBox(64, '', ' Auftrag Erfolgreich ausgeführt!', 4)
    Return MsgBox(16, 'Fehler', ' Es ist ein Fehler aufgetreten' & @CR & 'Aufgabe abgebrochen!', 4)
    Case $Contextmenuitem[2]
    If (MsgBox(36, 'Löschne', 'Wollen sie wirklich Löschen?') = 6) Then
    If (RegDelete($HKEY, $Name) = 1) Then Return MsgBox(64, '', ' Auftrag Erfolgreich ausgeführt!', 4)
    Return MsgBox(16, 'Fehler', ' Es ist ein Fehler aufgetreten' & @CR & 'Aufgabe abgebrochen!', 4)
    EndIf
    EndSwitch
    EndFunc ;==>Bearbeiten

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFile', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
    For $i = 0 To $nAmt[0] - 1
    $nSize = DllCall('shell32.dll', 'int', 'DragQueryFile', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate('char[' & $nSize & ']')
    DllCall('shell32.dll', 'int', 'DragQueryFile', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
    ReDim $aDropFiles[$i + 1]
    $aDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    _GUICtrlListView_BeginUpdate($hListView)
    For $i = 0 To UBound($aDropFiles) - 1
    _GUICtrlListView_AddItem($hListView, FileName($aDropFiles[$i]), _GUICtrlListView_GetItemCount($hListView) - 1)
    _GUICtrlListView_AddSubItem($hListView, _GUICtrlListView_GetItemCount($hListView) - 1, $aDropFiles[$i], 1)
    Next
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE)
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>WM_DROPFILES_FUNC

    [/autoit] [autoit][/autoit] [autoit]

    Func GetListViewToArray()
    Local $UB = _GUICtrlListView_GetItemCount($hListView)
    Local $GCount[$UB + 1][2]
    $GCount[0][0] = $UB
    For $i = 1 To $GCount[0][0]
    $GCount[$i][0] = _GUICtrlListView_GetItemText($hListView, ($i - 1))
    $GCount[$i][1] = _GUICtrlListView_GetItemText($hListView, ($i - 1), 1)
    Next
    Return $GCount
    EndFunc ;==>GetListViewToArray

    [/autoit] [autoit][/autoit] [autoit]

    Func FileName($Path_Datei)
    ;Ausgabe: Datei Name
    Local $FileName = ObjCreate('Scripting.FileSystemObject')
    If @error Then Return SetError(1, 1, -1)
    Return $FileName.GetFileName($Path_Datei)
    EndFunc ;==>FileName

    [/autoit] [autoit][/autoit] [autoit]

    Func Form_HIDE()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    EndFunc ;==>Form_HIDE

    [/autoit] [autoit][/autoit] [autoit]

    Func E()
    Dim $Save = GetListViewToArray()
    If IsArray($Save) Then
    For $i = 1 To $Save[0][0]
    IniWrite(@ScriptDir & '\ASManager.ini', 'SetAS', $Save[$i][0], $Save[$i][1])
    Next
    EndIf
    Exit
    EndFunc ;==>E

    [/autoit] [autoit][/autoit] [autoit]

    While 1 * Sleep(10)
    WEnd

    [/autoit]


    LG Kleiner

    Einmal editiert, zuletzt von Kleiner (12. September 2010 um 14:09)