Dziwny problem, może ktoś z was się z czymś takim spotkał: uruchmiam program okienkowy napisany w .NET 2.0 z dysku sieciowego, to dostaję wszystkim dobrze znany komunikat błędu (taki jak w temacie) ze sławetnymi guziczkami "Wyślij raport o błędach"/"Nie wysyłaj". Jeśli jednak skopiuję plik na pulpit i stamtąd odpalę - wszystko działa prawidłowo. O co tu może chodzić...?
Może jakieś prawa dostępu/zabezpieczenia? Nie potrafię zgadnąć.
Zobacz na szczegóły błędu, powinien (tzn. może, na win7 na pewno jest) się tam gdzieś znajdować błąd w wersji .net (np. ArgumentException albo NullPointerException) - może on coś powie.
zobacz coś takiego tylko wpisz odpowiednią ścieżkę
CasPol.exe -m -ag 1.2 -url file://Network_PC_Name/Share_Name/* FullTrust
@up: Aha, a potem administratorzy mnie dopadną za zmienianie polityk :P
Najgorsze, że nie mam stałego dostępu do komputera, na którym błąd występuje... (a oczywiście nie występuje na żadnym innym).
To niestety windows XP, nie jestem pewna czy szczegóły błędu będą dostępne - tak czy siak, praktycznie cały program jest w try/catchu, a mimo to się wywala, zamiast pokazać komunikat błędu.
Dzięki za rady, spróbuję tego CasPola, jak mi pozwolą ;)
jak chcesz móc uruchamiać programy .netowe z dysku sieciowego to musisz go dodać do zaufanych, albo kopiować program lokalnie :p
Spróbuj plikowi dodać streama ADS (Alternate Data Stream w NTFS) Zone.Identifier z identyfikatorem strefy URLZONE_TRUSTED, ciekawe czy to przejdzie
URLZONE_INTRANET = 1
URLZONE_TRUSTED = 2
URLZONE_INTERNET = 3 (to jest ustawiane plikom jak ściągane są z netu)
URLZONE_UNTRUSTED = 4
BOOL SetInternetZoneIdentifier(const char *lpszFullPath, DWORD dwZone = 3)
{
HANDLE hFile = INVALID_HANDLE_VALUE;
DWORD dwWritten = 0;
DWORD kShare = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
char szZoneIdentifier[MAX_PATH] = { 0 };
char szZoneFile[64] = { 0 };
DWORD dwZoneFile = 0;
BOOL bResult = FALSE;
wsprintf(szZoneIdentifier, "%s:Zone.Identifier", lpszFullPath);
hFile = CreateFile(szZoneIdentifier, GENERIC_WRITE, kShare, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
dwZoneFile = wsprintf(szZoneFile, "[ZoneTransfer]\nZoneId=%u", dwZone);
bResult = WriteFile(hFile, szZoneFile, dwZoneFile, &dwWritten, NULL);
CloseHandle(hFile);
if (bResult == FALSE || dwWritten != dwZoneFile)
{
return FALSE;
}
return TRUE;
}