Zakres widoczności pliku jako argumentu funkcji

0

Witam.

Mam problem z odczytem pliku w tym programie:

#include<iostream>
#include<cstdlib>
#include<Windows.h>

#define DELTA_PE_OFFSET 0x3C

using namespace std;


int main()
{
	
	HANDLE hFile = CreateFile(LPCWSTR("test.exe"), GENERIC_READ | GENERIC_WRITE, 0, 
		NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		cout<<"File doesn't exist\n";
		system("pause");
		exit(0);
	}
	
	// when we open file
	DWORD dwPEoffset, dwTMP;

	SetFilePointer(hFile,DELTA_PE_OFFSET,0,FILE_BEGIN);
	ReadFile(hFile, &dwPEoffset,4,&dwTMP,NULL);
	

	system("pause");
}

Plik oczywiście jest w tym samym katalogu co binarka. Próbowałem nawet podawać pełna ścieżkę do pliku , ale dalej nic.

0

A masz prawa zapisu w tym folderze?

0

jestem zalogowany jako administrator, nie wiedzę by folder byl ustawiony tylko do odczytu

0

If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.

Wyświetl ten GetLastError

0

zwraca 2

0

I co oznacza to 2?
Masz ban'a na googlach?

0

GetLastError()=2: The system cannot find the file specified

czyli wiem tyle co na poczatku

0

No to użyj GetFullPathName aby zobaczyć gdzie program szuka tego pliku.

0

Teoretyczne dobrze szuka. ale dy dojdzie do folderu gdzie znajduje sie folder Debug(tam siedzi binarka) to wyświetla jakieś krzaczki i
"einvalid null pointer"

0

spróbowałem z innym plikiem (tekstowym) , też nic.

0

Pokaż kod z tym GetFullPathName

0
#include<iostream>
#include<cstdlib>
#include<Windows.h>
#include<tchar.h>

#define DELTA_PE_OFFSET 0x3C
#define BSIZE 4096
#define NAME TEXT("test.exe")
using namespace std;


int main()
{
	TCHAR buffer[BSIZE] = TEXT("");

	
	
	HANDLE hFile = CreateFile(LPCWSTR("test.txt"), 
		GENERIC_READ | GENERIC_WRITE, 0, 
		NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		GetFullPathName(LPCWSTR("test.exe"),BSIZE,buffer,NULL);
		
		system("pause");
		exit(0);
	}
	
	// when we open file
	DWORD dwPEoffset, dwTMP;

	SetFilePointer(hFile,DELTA_PE_OFFSET,0,FILE_BEGIN);
	ReadFile(hFile, &dwPEoffset,4,&dwTMP,NULL);
	
	

	system("pause");
}
0

Moment, otwierasz jeden plik zaś pobierasz GetFullPathName innego pliku, nigdzie go nie wyświetlasz i twierdzisz że dobrze szuka?
Tak a propos, czy przypadkiem nie masz ustawionej (jak to w windowsach jest fabrycznie) ukryj rozszerzenia znanych typów?

0

Nie wyświetlam tego bo mogę sobie na break point sprawdzić tablice recznie. Co do rozszerzenia plików to nie. Mam je normalnie właczone.

Co ciekawe gdy potraktuje plik zwykłym

fopen

to daje rade

0

no tak z tym plikiem to zepsułem , ale sprawdzałem z normalnym plikiem i tez nic

0

W takim razie spróbuj: ... LPCWSTR(L"test.txt"), ...

0

Ha! Działa. Danke.

1 użytkowników online, w tym zalogowanych: 0, gości: 1