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
;#RequireAdmin
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
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'
$Form[0] = GUICreate('Start Manager', 400, 300, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_ACCEPTFILES))
GUISetBkColor(0xFFFACD, $Form[0])
GUISetOnEvent(-3, 'E')
$ListView = GUICtrlCreateListView('', 5, 5, 390, 290, Default, $WS_EX_CLIENTEDGE)
$hListView = GUICtrlGetHandle($ListView)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
_GUICtrlListView_InsertColumn($hListView, 0, 'Datei', 50)
_GUICtrlListView_InsertColumn($hListView, 1, 'Pfad', 340)
$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')
$Contextmenuitem[3] = GUICtrlCreateMenu('Öffnen', $Contextmenu)
$Contextmenuitem[4] = GUICtrlCreateMenuItem('Starten', $Contextmenuitem[3])
GUICtrlSetOnEvent(-1, '')
$Contextmenuitem[5] = GUICtrlCreateMenuItem('Alle Starten', $Contextmenuitem[3])
GUICtrlSetOnEvent(-1, '')
$Contextmenuitem[6] = GUICtrlCreateMenu('Beenden', $Contextmenu)
$Contextmenuitem[7] = GUICtrlCreateMenuItem('Schlissen', $Contextmenuitem[6])
GUICtrlSetOnEvent(-1, '')
$Contextmenuitem[8] = GUICtrlCreateMenuItem('Alle Schlissen', $Contextmenuitem[6])
GUICtrlSetOnEvent(-1, '')
$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, '')
$Contextmenuitem[12] = GUICtrlCreateMenuItem('Exit', $Contextmenu)
GUICtrlSetOnEvent(-1, '')
GUISetState()
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
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
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
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
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
Func Form_HIDE()
GUISetState(@SW_HIDE, @GUI_WinHandle)
EndFunc ;==>Form_HIDE
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
While 1 * Sleep(10)
WEnd
LG Kleiner