Benutzer mit den meisten Antworten
Inhalt einer Systemdatei auslesen

Frage
-
Hallo Community
Ich schreibe der Zeit an einem Programm das die MD5 einer Datei ausgibt. Das funktioniert so weit auch. Nur mit System Dateien, wie der atapi.sys, nicht, da ich immer keinen zugriff drauf habe, weil sie von einem anderen Prozess verwendet wird. Gibt es eine Möglichkeit den Inhalt der atapi.sys oder anderen Systemdateien auszulesen?
MfG
pc-jedi
Antworten
-
Hallo pc-jedi!
Bin Gerade auf die neue Version(Visual c++ 2010 Express Edition) umgestiegen.
Die Express Edition kann keine x64 Programme erstellen.
Funktioniert das Programm dann auch auf 32bit OS?
Nein, natürlich nicht...
Wenn Du bei 32-Bit bleiben willst, dann kannst Du alternativ auch die "File-System-Redirection" in Deinem Fall ausschalten. Dann sollte es auch mit Deinem 32-Bit Programm auf einem x64 System funktionierne. DU musst nur die entsprechenden Methode "dynamisch" ansprechen (LoadLibrary/GetProcAddress).Siehe: Wow64DisableWow64FsRedirection
http://msdn.microsoft.com/en-us/library/aa365743File System Redirector
http://msdn.microsoft.com/en-us/library/aa384187
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Jochen Kalmbach Mittwoch, 14. Juli 2010 09:02
- Als Antwort markiert Robert BreitenhoferModerator Montag, 19. Juli 2010 11:06
Alle Antworten
-
> Ich schreibe der Zeit an einem Programm das die MD5 einer Datei ausgibt. Das funktioniert so weit auch. Nur mit System Dateien, wie der atapi.sys, nicht, da ich immer keinen zugriff drauf habe, weil sie von einem anderen Prozess verwendet wird. Gibt es eine Möglichkeit den Inhalt der atapi.sys oder anderen Systemdateien auszulesen?
Siehe: CreateFile mit FILE_FLAG_BACKUP_SEMANTICS
http://msdn.microsoft.com/en-us/library/aa363858Und auch: BackupRead:
http://msdn.microsoft.com/en-us/library/aa362509Um die Privilegien anzupassen siehe auch:
http://msdn.microsoft.com/en-us/library/ms717797Alternativ kannst Du Dich auch mit dem Volume Shadow Copy Service beschäftigen: Damit hast Du Zugriff auf einen Snapshot des Dateisystemes:
Übersicht:
http://msdn.microsoft.com/en-us/library/bb968832
Backup:
http://msdn.microsoft.com/en-us/library/aa384589
Jochen Kalmbach (MVP VC++) -
Hi
Vielen Dank für deine Hilfe.
Zur Zeit hänge ich an meiner CreatFile funktion:
hFile = CreateFile("C:\\Windows\\System32\\drivers\\atapi.sys", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
GetLastError gibt immer 0x6 zurück, aber ich kann mir nicht erklären warum.
Hoffe du kannst mir auch diesmal wieder helfen.
MfG
pc-jedi
-
-
Zur Zeit hänge ich an meiner CreatFile funktion:
hFile = CreateFile("C:\\Windows\\System32\\drivers\\atapi.sys", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
GetLastError gibt immer 0x6 zurück, aber ich kann mir nicht erklären warum.
Wenn ich diesen Code ausführe, dann öffnet er auf meinem Windows 7 Rechner brav die Datei...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Was für ein Benutzer bist Du denn? Administrator?
Ohne Administrator Benutzer (oder besser gesagt Backup-Benutzer) wirst Du das nicht hinbekommen...Aber "6" ist schon etwas merkwürdig.... ist das x64? Welches OS?
Greetings
Jochen
Jochen Kalmbach (MVP VC++)Ich bin Administrator und habe auch eine manifestfile eingebunden.
OS: Win7 x64
-
> Wie starte ich den ein Programm als x64?
Du musst es als x64 übersetzen!!!
Welche VS-Version hast Du denn?
Normalerweise musst Du zuerst eine "x64 "Konfiguration hinzufügen:
"Build|Configuration Manager...|Active Solution Platform| New..."
New platform: x64
Copy from: Win32
Jochen Kalmbach (MVP VC++) -
Hallo pc-jedi!
Bin Gerade auf die neue Version(Visual c++ 2010 Express Edition) umgestiegen.
Die Express Edition kann keine x64 Programme erstellen.
Funktioniert das Programm dann auch auf 32bit OS?
Nein, natürlich nicht...
Wenn Du bei 32-Bit bleiben willst, dann kannst Du alternativ auch die "File-System-Redirection" in Deinem Fall ausschalten. Dann sollte es auch mit Deinem 32-Bit Programm auf einem x64 System funktionierne. DU musst nur die entsprechenden Methode "dynamisch" ansprechen (LoadLibrary/GetProcAddress).Siehe: Wow64DisableWow64FsRedirection
http://msdn.microsoft.com/en-us/library/aa365743File System Redirector
http://msdn.microsoft.com/en-us/library/aa384187
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Jochen Kalmbach Mittwoch, 14. Juli 2010 09:02
- Als Antwort markiert Robert BreitenhoferModerator Montag, 19. Juli 2010 11:06
-
-
> Die Funktion Wow64DisableWow64FsRedirection ist ja unter XP x86 nicht verfügbar. Wie mach ich es das die Anwendung, ohne sie für jede OS Version umzuprogrammieren auch auf XP x86 läuft?
Als Beispiel, wie man sowas macht, kannst Du dies hier verwenden:
http://msdn.microsoft.com/en-us/library/ms684139
Jochen Kalmbach (MVP VC++)