ExamineDirectory() als anderer Benutzer (und Passwort)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von techniker »

Hallo,

wie kann ich mit ExamineDirectory() einen (Netzwerk-) Ordner analysieren,
der einen anderen Benutzer mit Passwort benötigt?

Oder bleibt mir wirklich nur der Umweg über "net use" und den Share
temporär als Laufwerk einhängen? :roll:

Danke! :allright:
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von bobobo »

Du dürftest grundsätzlich ein Problem haben innerhalb der Purebasic-Anwendung Dir selber erweiterte Rechte zu geben.

Üblicherweise wird ein Program als bestimmter User gestartet und hat dann entsprechende Rechte.
temporäres Vorab net use (Laufwerksmapping ist hier unnötig, examinedirectory geht auch mit unc ist mutmasslich nicht die schlechteste Lösung.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von techniker »

Aber was hat der lokale User (der User ist übrigens das lokale Systemkonto, da die EXE als Service läuft)
mit einer externen AD-Kennung zu tun, um auf einen Share zuzugreifen?
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von bobobo »

Du willst aus einem Programm heraus Zugriff auf ein Verzeichnis erlangen, auf das der User der das Programm startet (System) erstmal keinen Zugriff hat. Wenn ich richtig verstanden habe...

Versuch macht kluch

Versuch mal Examinedirectory() mit der UNC-Pfadangabe
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von techniker »

Das mache ich sowieso. Nur scheitert der Aufruf.. :|
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von bobobo »

Ich nehme an die Zugangsdaten zur Freigabe sind bekannt.
Eine Möglichkeit wäre das Du vor Examinedirectory ein "net use ..." per cmd-Script absetzt

net use \\192.168.1.45\datenverzeichnis UserPasswort /user:Username
(Da gibt es mit Sicherheit andere M;öglichkeiten
diese net use Geschichte stellt sich bei mir dann so dar, dass der Explorer das nicht unbedingt mitbekommt, gerne bleibt der trotz ausloggen
an der Freigabe so angemeldet.

hier mal ein code der bei mir so läuft

Code: Alles auswählen

server.s="\\IPDESENTFERNETENRECHNERS"
USER.s="HIERDERUSER"
PW.s="HIERDASPASSWORT"
ausloggen.s="net use "+server+"/IPC$ /Delete /Yes"
einloggen.s="net use "+server+" "+PW+" /User:"+USER

RunProgram("cmd","/c "+einloggen,"",#PB_Program_Wait)

;auf Buchhaltung habe ich normalerweise keinen Zugriff, als anderer User dann schon
ExamineDirectory(0,server+"\Buchhaltung","*.*")

While NextDirectoryEntry(0)
  If DirectoryEntryType(0) = #PB_DirectoryEntry_File
    Type$ = "[File] "
    Size$ = " (Size: " + DirectoryEntrySize(0) + ")"
  Else
    Type$ = "[Directory] "
    Size$ = "" ; A directory doesn't have a size
  EndIf
  
  Debug Type$ + DirectoryEntryName(0) + Size$
Wend
FinishDirectory(0)

RunProgram("cmd","/c "+ausloggen,"",#PB_Program_Wait)

;Nochmalchecken ob tatsächlich ausgeloggt wurde
;DAS MAG BEI MIR NICHT UNBEDINGT KLAPPEN, BLEIBT MEIST EINGELOGGT

ExamineDirectory(0,server+"\Buchhaltung","*.*")

While NextDirectoryEntry(0)
  If DirectoryEntryType(0) = #PB_DirectoryEntry_File
    Type$ = "[File] "
    Size$ = " (Size: " + DirectoryEntrySize(0) + ")"
  Else
    Type$ = "[Directory] "
    Size$ = "" ; A directory doesn't have a size
  EndIf
  
  Debug Type$ + DirectoryEntryName(0) + Size$
Wend
FinishDirectory(0)
Runprogramm kann auch #PB_Hide , dann flackerts weniger.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von techniker »

Vielen Dank für deinen Tipp, aber das mache ich jetzt im Prinzip schon so.
Meine Frage war, ob das nicht in PB eleganter zu lösen ist..? :wink:
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von bobobo »

achso ..

Gibt es denn irgendwo eine elegante Lösung für sowas ?

ich hab für c++ sowas gefunden
https://stackoverflow.com/questions/232 ... ng-win32-c
im Prinzip letztlich auch mit dem Problem das bereits bestehende Verbindungen querhauen.
Da bin ich zu doof für um das in pb zu übersetzen.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: ExamineDirectory() als anderer Benutzer (und Passwort)

Beitrag von techniker »

Ansonsten hat keiner eine Idee..? :(

Mittlerweile weiß ich auch, dass ich keinesfalls - wenn auch nur temporär - ein Netzlaufwerk
einbinden darf, da der User keinen direkten Zugriff auf den Share erlangen darf.. :roll:
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Antworten