z.B.: Link
Edit: Knapp zu spät ![]()
z.B.: Link
Edit: Knapp zu spät ![]()
Der richtige Weg wäre:
Platte mit NTFS formatieren, Sicherheitseinstellungen der Ordner passend (lesen/schreiben je Ordner) einstellen, Freigabe einrichten für alle "Vollzugriff".
Micha_he, danke auch dir - jedoch: Es handelt sich doch um den selben Benutzer, ich möchte doch nur mit Administrationsberechtigungen ausführen?
Dann also doch anderer Benutzer !
Wenn Du etwas wie RunAS, psexec oder "Ausführen als" benutzt, läuft der Prozess unter einem anderen Benutzer. Und weil der Prozess nicht mehr unter dem Benutzer läuft dem der Desktop "gehört", siehst Du auch nix.
Und hier kommt "psexec". "-i" = interaktive mit dem Desktop des aktuellen Benutzers.
Meinst du so?
Genau, so geht es ! Edit: FAST !
In folgender Wertekombination, tritt die Kombination bei zweiten Auftreten in dreifacher Variante auf (005c005c005c).
Wenn möglich sollte aber nur die spätere Doppel-Kombination den Start definieren, so das der erste Teil der Dreierkombi vor dem START bleibt.
Innerhalb START-ENDE kann die Kombi (005c) einfach vorhanden sein.
$alt = "000a0b005c005c00abcd0c0d005c005c005c001234005c56789FEBCDD22FEBCDD0000000"
[/autoit] [autoit][/autoit] [autoit]$sStart = '005c005c'
$sEnde = 'FEBCdd'
$neu = StringRegExpReplace($alt, "(?i)" & $sStart & "((?:.(?!" & $sStart & "))+?)" & $sEnde, "START${1}ENDE")
MsgBox(0, "", $neu)
Dazu noch eine Verbesserungsidee ?
Edit: Da ich das START-Muster nochmals verfeinern musste, hat sich das Problem dreifach auftretender Treffer minimiert, so das es wohl nicht mehr auffallen sollte.
@Sprenger: Knapp daneben ![]()
Gut Oscar, Deine Lösung haut mit dem Beispiel hin.
Nur war natürlich "xx" wie auch der Rest des Strings ein Platzhalter für andere Daten. Der eigentliche Startkenner ist die Wertekombination "00 5c 00 5c", welche ich binär aus einer Datei lese.
Wenn ich also statt [^xz] dann [^(005c005c)] schreibe geht es nicht mehr.
Bei folgendem Beispiel ersetzt der Befehl 'StringRegExpReplace', beim ersten Treffer einen zu langen Teil-String.
$alt = "aabbccxxddeeffxXyyyyZzgghhiiXxyyyyzZjjkkllXXyyyyZZmmnnoo"
[/autoit] [autoit][/autoit] [autoit]$neu = StringRegExpReplace($alt, "(?i)xx(.*?)zz", "00${1}11")
[/autoit] [autoit][/autoit] [autoit]Msgbox(0,"",$neu)
[/autoit]Ich möchte in der kürzesten Form des Musters "xx....zz", die "xx" durch "00" ersetzen und "zz" durch "11".
Hierbei soll die Gesamtlänge des Strings aber nicht verändert werden.
Im Grunde funktioniert das o.a. Beispiel, nur müsste das Ersetzen erst ab dem zweiten Auftreten von "xx" das Ersetzen beginnen, da ein weiters mal "xx" vor dem "zz" vorkommt.
Kann mir jemand erklären wo mein Fehler ist ?
Generell muss es doch über RunAs gehen - warum tut es das nicht?!?
Weil ein gerade angemeldeter User "X" nicht das Fenster der Anwendung welche unter User "Y" gestartet wurde sieht ! Auch nicht oder gerade nicht Anwendungen die ein Admin "Y" gestartet hat.
Eine Lösungsidee wäre: PSExec anstatt RunAs.
PSExec.exe -u [Dom\User] -p [PW] -i [Kommando]
Scheinbar ist der Parameter -i (interkativ mit dem Desktop des angemeldeten Users) bei einem lokalen Ausführen nicht einmal notwendig.
Was steht denn in "$Filepath[0]" als Ziel drin ? Lass es doch mal mit einer MsgBox ausgeben.
Edit: Vergess es. Ist für das Problem was Du hast, völlig uninteressant ![]()
Ich hätte auch noch eine Idee: Enthält @ScriptDir vielleicht Leerzeichen auf den fehlerhaften Rechnern ?
Eine Lösung mit Windows Mitteln: Exe alle in einen Ordner, Verknüpfung für jede Exe auf den Desktop, rechte Maustaste - Eigenschaften, unter 'Tastenkombination' eine Ctrl-Alt-xxx Kombination definieren, fertig.
Eine Lösung mit zusätzlichem Autoit-Tool: Alle Exe in einen Ordner, zusätzlich ein zusätzliches Autoit-Tool mit HotKeySet()-Kommandos welches die Programme startet in den Ordner, dieses Zusatztool in den Autostart, fertig. Hierbei kannst Du dann auch andere Kombinationen statt Ctrl-Alt-xxx definieren.
Zeile 23 Deiner Funktion muss aber so lauten:
[autoit]FileSetPos($hFH, $hOldPos, 0)
[/autoit]Um das FileMove()-Problem bei später laufender EXE-datei zu umgehen, wäre folgendes wohl besser:
[autoit]FileCreateShortcut(@AutoItExe,@StartupDir & "\Start_Programm.lnk"
[/autoit]wäre nett wenn einer, der windows 7 hat, eines dieser scripts testen könnte...
Ich hatte das Script unter Win7, 64bit, ohne Adminrechte laufen lassen. Keine Probleme, bis auf die Nachfrage vom Geräte-Manager wegen des "nur Lese-Modus".
Ich habe als Beispiel mal einen Anfang ohne Mausklick-Koordinaten gemacht.
Das Script startet zur Zeit den Geräte-Manager und öffnet die Gruppe "Audio-,....".
Das ganze unabhängig von dessen Position. Leider bekam ich von den Items keinen Text zurück, sonst hätte man mit '_GUICtrlTreeView_FindItem()' arbeiten können.
Aber nach dieser Art sollte man das SubItem "Realtek..." auch auswählen können.
#include <GuiTreeView.au3>
[/autoit] [autoit][/autoit] [autoit]ShellExecute("devmgmt.msc")
WinWait("Geräte-Manager")
Sleep(5000) ; Zeit um Nachfrage bei Nicht-Admin zu bestätigen
$hWnd = WinGetHandle("Geräte-Manager", "")
$hTV = ControlGetHandle($hWnd, "", "[CLASS:SysTreeView32; INSTANCE:1]")
$hTVI = _GUICtrlTreeView_GetFirstItem($hTV)
_GUICtrlTreeView_ClickItem($hTV, $hTVI,"","",1)
ControlSend($hWnd, "", "[CLASS:SysTreeView32; INSTANCE:1]", "audio-")
$hTVI = _GUICtrlTreeView_GetSelection($hTV)
_GUICtrlTreeView_ClickItem($hTV, $hTVI,"","",2)
Deaktiviere einmal die LAN-Verbindung bevor Du per WLAN verbindest.
Bei mir geht unter XP auch nur eine von beiden Verbindungen stabil. Unter Win7 geht beides parallel.
Ist es gewollt, das die Laufwerks-Buttons in der kleinsten Fenstergröße, etwas zu klein für Bild und Text sind ?
Siehe:
Edit: wie blubbstar schrieb: unter Windows7 64bit
Muss hier nochmal kurz pushen, damit ich keinen neuen Thread aufmachen muss.
Ich wollte bei einem fernen PC gerne auf HKEY_CURRENT_USER zugreifen.
Schaffe ich das auch mit meiner Kennung ohne dass wer anders angemeldet
und ohne das dass ich mich manuell anmelden muss?
"HKEY_CURRENT_USER" ist der Registry-Teil des gerade angemeldeten Users.
Wie willst Du darauf zugreifen, wenn niemand angemeldet Ist ?
Der einzige Weg den ich weiß ist, "HKEY_USERS" und dann das betreffende Unterverzeichnis des User wählen.
Drag'nDrop auf die AU3-Datei geht glaube ich nicht. Aber auf die kompilierte EXE-Datei geht es dann mit $cmdline, wie Ineluki bereits schrieb.
Ganz einfach:
Das verbundene Netzlaufwerk "V:\" ist ein Laufwerk des angemeldeten Users!
Nach einem RunAs laufen die Run-Befehle aber z.B. als "Administrator" und der hat kein V-Laufwerk.
Mein Tip: Als User das Programm aus dem Netzlaufwerk nach Lokal kopieren und dann per RunAs ausführen. Oder gleich per "\\..." Netzwerkpfad starten.
Warum, Du brauchst doch die Funktion nur 1x aufrufen und in einem Array (Standard) speichern.
Nun durchläufst du dein Array von 1 bis $array[0] und führst Deinen Befehl aus. Oder hab ich Dich jetzt falsch verstanden ?
[autoit]$array = _GetFilesFolder_Rekursiv("C:\Programme", "txt")
For $i = 1 To $array[0]
;Dein Aufruf mit $array[$i] als Parameter
Next
Warum willst Du hierfür die Funktion ändern ?