BackupRead problem

  • Thread starter Stefan Sonnenberg-Carstens
  • Start date
S

Stefan Sonnenberg-Carstens

I'm trying to create a Backup/Restore app.
I'm really struggeling for a long time.

I can successfully read directories, but not files.
Every time, I'll try I get "Access denied", Error 5.

It's running with admin privs.

Any ideas ?

#!python
import sys
import os
import os.path
import getopt
import time


DELETE=0x00010000
READ_CONTROL=0x00020000
WRITE_DAC=0x00040000
WRITE_OWNER=0x00080000
SYNCHRONIZE=0x00100000
STANDARD_RIGHTS_REQUIRED=0x000F0000L
STANDARD_RIGHTS_READ=READ_CONTROL
STANDARD_RIGHTS_WRITE=READ_CONTROL
STANDARD_RIGHTS_EXECUTE=READ_CONTROL
STANDARD_RIGHTS_ALL=0x001F0000
SPECIFIC_RIGHTS_ALL=0x0000FFFF

FILE_ATTRIBUTE_REPARSE_POINT=0x400

from ctypes import *

if os.name == 'nt':

import win32security
import win32process
import win32file

try:
import win32api
except ImportError,e:
print >>sys.stderr,'Could not load win32api module. Can not
continue'
os._exit(1)
try:
import wmi
except ImportError,e:
print >>sys.stderr,'Could not load wmi module. Can not continue'
os._exit(1)
try:
import ctypes
except ImportError,e:
print >>sys.stderr,'Could not load ctypes module. Can not continue'
os._exit(1)
else:
print >>sys.stderr,'Sorry, your platform %s is not supported' % os.name
os._exit(1)

if len(sys.argv) >= 1:
try:
opts,args = getopt.getopt(sys.argv[1:],'h',('help',))
except getopt.GetoptError,e:
print str(e)
if not ctypes.windll.shell32.IsUserAnAdmin():
win32api.ShellExecute(None,'runas',sys.executable,'
'.join(sys.argv),r'C:\WINDOWS',0)
else:
print >>sys.stderr,'Running with administrative privileges'
token =
win32security.OpenProcessToken(win32process.GetCurrentProcess(),win32security.TOKEN_ADJUST_PRIVILEGES|win32security.TOKEN_QUERY)
if token:
for priv in
(win32security.SE_BACKUP_NAME,win32security.SE_RESTORE_NAME):
luid = win32security.LookupPrivilegeValue(None,priv)
newState = [(luid,win32security.SE_PRIVILEGE_ENABLED)]
try:
win32security.AdjustTokenPrivileges(token,0,newState)
except:
print >>sys.stderr,'Could not get (some) required
priviledge(s): ',win32api.FormatMessage(win32api.GetLastError())
os._exit(1)
win32api.CloseHandle(token)
else:
print >>sys.stderr,'Could not get token for running process'
os._exit(1)
print >>sys.stderr,'Acquired backup/restore context
(SeRestorePrivilege and SeBackupPrivilege enabled)'
inf =
win32file.CreateFile(r'C:\Windows\System32\drivers\etc\hosts',READ_CONTROL,0,None,win32file.OPEN_EXISTING,win32file.FILE_FLAG_BACKUP_SEMANTICS,None)
buf = win32file.AllocateReadBuffer(4096)
ctx = 0
(bytes_read,buf,ctx) =
win32file.BackupRead(inf,4096,buf,False,True,ctx)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,058
Latest member
QQXCharlot

Latest Threads

Top