Seite 1 von 1

Windows 7 - kopieren von Dateien in System32 / SysWOW64 usw.

Verfasst: 29.04.2010 19:33
von smateja
Hallo zusammen,

glaub mir pfuscht die Benutzerkontensteuerung in PB beim kopieren von Datein nach C:\WINDOWS\SysWOW64\ gewaltig dazwischen.

Versucht mit folgenden Befehlen:

- CopyDirectory
- CopyFile

Hat es evtl schon jemand mit diversen Tricks geschaft hier DLL Dateien rein zu kopieren?

LG

Re: Windows 7 - kopieren von Dateien in System32 / SysWOW64

Verfasst: 29.04.2010 19:41
von ts-soft
Erstmal mußt Du die passende manifest Deinem Programm hinzufügen.
Mit Vista-User Modus bekommste schon mal die richtigen Ergebnisse,
wenn Kopieren usw. fehlschlägt, ohne wird oftmals Erfolg gemeldet, aber
die Dateien landen im Nirwana des Virtual Store.

Für das Kopieren nach System32 usw. ist der Admin-Modus anzufordern.
Mit 32-Bit Application die 32-Bit DLLs nach system32 kopieren und mit
64-Bit Application die 64-Bit DLLs auch nach system32 kopieren.

Mit 64-Bit Application kann man dann auch 32-Bit DLLs nach SysWOW64 kopieren.
Anders herum wirds dann schwierig :mrgreen:

Gruß
Thomas

Re: Windows 7 - kopieren von Dateien in System32 / SysWOW64

Verfasst: 29.04.2010 19:51
von smateja
Mhmm - wenn ich jetzt aber lokaler Admin bin - und auch das Proggi mit rechtsklick eigenschaften - als admin ausführen starte - selbes Ergebniss - mmhm

Gibts nicht mal wieder so nen ultrageheimem API aufruf - der dann einfach das mit nativen PB kopier Befeheln zuläßt?

*hofft*

Re: Windows 7 - kopieren von Dateien in System32 / SysWOW64

Verfasst: 29.04.2010 20:17
von ts-soft
Es sollte alles funktionieren, wenn Du es so machste, wie ich es oben schrob.
Also nach SysWOW64 geht natürlich nicht. das existiert ja nicht so richtig :mrgreen:
Dann mußte schon die Redirection ausschalten:

Code: Alles auswählen

EnableExplicit

Prototype.i IsWow64Process(hProcess.i, Wow64Process.i)
Prototype.i Wow64EnableWow64FsRedirection(Wow64EnableRedirection.i)

Procedure.i DisableWow64FsRedirection(Flag.i)
  If OSVersion() >= #PB_OS_Windows_Vista
    Protected.i DLL = GetModuleHandle_("kernel32.dll")
    Protected.IsWow64Process IsWow64Process
    Protected.Wow64EnableWow64FsRedirection Wow64EnableWow64FsRedirection
    Protected.i IsWow64
    If DLL
      IsWow64Process = GetFunction(DLL, "IsWow64Process")
      Wow64EnableWow64FsRedirection = GetFunction(DLL, "Wow64EnableWow64FsRedirection")
      
      If IsWow64Process(GetCurrentProcess_(), @IsWow64)
        If IsWow64
          ProcedureReturn Wow64EnableWow64FsRedirection(Flag ! 1)
        EndIf
      EndIf
    EndIf
  EndIf
EndProcedure
Wenn die ausgeschaltet ist, darf Dein Programm aber keine DLLs laden oder benötigen, weil dann krachts!

Re: Windows 7 - kopieren von Dateien in System32 / SysWOW64

Verfasst: 29.04.2010 20:58
von smateja
Merci - das ja mal n tauger anfang.

Naja - Hauptproblem ist im Moment - oder warum die kopieraktion - ich versuche einen mysql odbc treiber von hand zu installieren -

gibt zwar n msi paket aber das mag sich nicht /Quiet /oder full unentendent installieren.
Jetzt die Idee die dlls von hand zu kopieren.

Zuerst nach c:\programm files\mysql <. dahin geht das kopieren ohne probleme

Das danach registrieren mit folgendem Tool aus dem myodbc pack funktioniert aber nicht so wie es soll:

ECHO Registering driver
myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"

Rückmeldung vom Tool - alles 1A funktioniert - jedoch unter der Verwaltung von ODBC ist weit und breit kein mysql treiber da :(


NAchtrag: Hat sich erledigt - auch hier Problematik mit den fehlenden Adminrechten. In den Compileroptionen - AdministratorModus anfordern angeklickert - nun gehts - NARF :)