imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 01.02.2005, 02:14     # 1
Merlyel
Junior Member
 
Регистрация: 10.08.2003
Сообщения: 189

Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)
копирование защищенных системных файлов

Можно ли осуществить такое?
Т.е. например, файл %WinDir%\system32\config\default используется системой, соответственно скопить его незя
ЗЫ. Язык С++, но в принципе сойдет и если просто кто-нить объяснит способ
ЗЗЫ. Может можно скопить его еще до загрузки WIN (но диск NTFS), т.е. что-то вроде того, как работает Partition Magic

Последний раз редактировалось Merlyel; 01.02.2005 в 02:18.
Merlyel вне форума  
Старый 01.02.2005, 13:40     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Есть тулза, - "File-In-Use" называется. Взять можно с microsoft.com
RaZEr вне форума  
Старый 03.02.2005, 01:24     # 3
Merlyel
Junior Member
 
Регистрация: 10.08.2003
Сообщения: 189

Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)
за прогу пасиб, однако хотелось бы знать, как это делается (раздел-то Прораммирование, однако

Последний раз редактировалось Merlyel; 06.02.2005 в 02:43.
Merlyel вне форума  
Старый 06.02.2005, 02:52     # 4
Merlyel
Junior Member
 
Регистрация: 10.08.2003
Сообщения: 189

Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)Merlyel Реально крут(а)
А все-таки, никто не расскажет, как такое можно сделать?
Merlyel вне форума  
Старый 06.02.2005, 09:23     # 5
watson
::VIP::
 
Аватар для watson
 
Регистрация: 10.10.2003
Адрес: Estonia
Сообщения: 1 791

watson Гурее всех гурых :-)
watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)watson Гурее всех гурых :-)
Цитата:
Сообщение от Jinx
А все-таки, никто не расскажет, как такое можно сделать?
Если вопрос задан один раз, то нужно ждать ответа. не стоит плодить посты.
__________________
Я вернулся
watson вне форума  
Старый 08.02.2005, 14:12     # 6
kot_
Junior Member
 
Аватар для kot_
 
Регистрация: 19.11.2004
Адрес: Dnepropetrovsk
Пол: Male
Сообщения: 67

kot_ Путь к славе только начался
Цитата:
Сообщение от Jinx
А все-таки, никто не расскажет, как такое можно сделать?
Такое можно сделать используя функции OpenRow, WriteRow etc. Как использовать - читай MSDN.
__________________
kot_ вне форума  
Старый 21.08.2005, 08:37     # 7
UriF
Member
 
Регистрация: 20.05.2004
Сообщения: 385

UriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царстве
не пробовал это?
Public Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

По-моему, копирует файлы, занятые в процессах?
UriF вне форума  
Старый 21.08.2005, 11:38     # 8
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
мда, послдений пост тут был аж в феврале...
UriF - посты набиваем?
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
/7y3uK вне форума  
Старый 23.08.2005, 06:54     # 9
UriF
Member
 
Регистрация: 20.05.2004
Сообщения: 385

UriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царствеUriF Луч света в тёмном царстве
Перелистал форум и увидел, что могу дать любопытное решение, тем более что эта API действительно обходит защиту Windows (сам бился над этой проблемой пару лет назад ок. 3-х месяцев - надо было копировать .doc, открытые MS Word - ничего не помогало). Так что дал, так сказать, для будущих читателей

Если Вас это интересует, то вот этот код с этой API

Public Function WinCopyFile(SourceFile As String, DestFile As String) As Long
'---------------------------------------------------------------
' PURPOSE: Copy a file on disk from one location to another.
' ACCEPTS: The name of the source file and destination file.
' RETURNS: Nothing
'---------------------------------------------------------------
Dim Result As Long
If Dir(SourceFile) = "" Then
Result = 0
Else
Result = apiCopyFile(SourceFile, DestFile, False)
End If

WinCopyFile = Result
End Function

А это код для удаления файлов, которые не хотят удаляться


Public Type SHFILEOPSTRUCT
hwnd As Long 'handle to a window, can be 0
wFunc As Long 'one of the 4 available constants shown later
pFrom As String 'string indicating a path to the file that function will work on (must be zero terminated)
pTo As String 'string indicating the resulting file after operation
fFlags As Integer 'shown later
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As Long ' only used if FOF_SIMPLEPROGRESS
End Type

Public Const FO_COPY = &H2 'copy operation
Public Const FO_DELETE = &H3 'delete operation
Public Const FO_MOVE = &H1 'move operation
Public Const FO_RENAME = &H4 'rename operation, don't use with multiple files


'fFlags can be one of the following constants:

Public Const FOF_ALLOWUNDO = &H40
Public Const FOF_CONFIRMMOUSE = &H2
Public Const FOF_FILESONLY = &H80
Public Const FOF_MULTIDESTFILES = &H1 'The pTo member specifies multiple destination files (one for each source file) rather 'than one directory where all source files are to be deposited
Public Const FOF_NOCONFIRMATION = &H10 'Respond with "Yes to All" for any dialog box that is displayed.
Public Const FOF_NOCONFIRMMKDIR = &H200 'Do not confirm the creation of a new directory if the operation requires one to be 'created.
Public Const FOF_RENAMEONCOLLISION = &H8 'Give the file being operated on a new name in a move, copy, or rename 'operation if a file with the target name already exists
Public Const FOF_SILENT = &H4 'Do not display a progress dialog box
Public Const FOF_SIMPLEPROGRESS = &H100 'Display a progress dialog box but do not show the file names.
Public Const FOF_WANTMAPPINGHANDLE = &H20

Public Declare Function SHFileOperation Lib "shell32.dll" (lpFileOp As SHFILEOPSTRUCT) As Long

Public Const OFS_MAXPATHNAME = 128
Public Const OF_EXIST = &H4000

Public Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type

Public Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long


Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long


Public Function DoesFileExist(NameOfFile As String) As Boolean
Dim X As Long
Dim wStyle As Long
Dim Buffer As OFSTRUCT
Dim IsThere As Long

If (Len(NameOfFile) = 0) Or (InStr(NameOfFile, "*") > 0) Or (InStr(NameOfFile, "?") > 0) Then
DoesFileExist = False
Exit Function
End If
On Error GoTo NoSuchFile

X = OpenFile(NameOfFile, Buffer, OF_EXIST)

If X < 0 Then
GoTo CheckForError
Else
DoesFileExist = True
Exit Function
End If
CheckForError:
X = Buffer.nErrCode
If X = 3 Then
GoTo NoSuchFile
End If

NoSuchFile:
DoesFileExist = False
ExitFileExist:
On Error GoTo 0
End Function

'First Version
Public Function DeleteFIleAPI(sFilename As String, bSilent As Boolean, AllowRecycle As Boolean) As Boolean
'recycles the file specified in sFilename
On Error GoTo er
Dim X As Long
Dim rc As Long
Dim shfo As SHFILEOPSTRUCT
bSilent = True
If DoesFileExist(sFilename) Then
X = DeleteFile(sFilename)
End If
DeleteFIleAPI = CBool(X)
Exit Function

er: DeleteFIleAPI = False
End Function

'Second Version
Public Function DeleteFIleAPI(sFilename As String, bSilent As Boolean, AllowRecycle As Boolean) As Boolean
'recycles the file specified in sFilename
On Error GoTo er
'Dim X As Long
Dim rc As Long
Dim shfo As SHFILEOPSTRUCT
bSilent = True
If DoesFileExist(sFilename) Then
With shfo
.wFunc = FO_DELETE 'set the flag to delete the file
.pFrom = sFilename & Chr$(0) 'zero terminate file name
If AllowRecycle Then
.fFlags = FOF_SILENT + FOF_ALLOWUNDO + FOF_NOCONFIRMATION 'some additional flags
Else
.fFlags = FOF_SILENT + FOF_NOCONFIRMATION 'some additional flags
End If
'check if we want silent or with progress bar delete
If Not bSilent Then .fFlags = .fFlags + FOF_SIMPLEPROGRESS
End With
'perform the operation
'X = SHFileOperation(shfo)
DeleteFIleAPI = (SHFileOperation(shfo) = 0)
End If
Exit Function

er: DeleteFIleAPI = False
End Function

Впрочем, модератор может удалить этот пост

Последний раз редактировалось UriF; 23.08.2005 в 07:03.
UriF вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 19:39.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.