Username
Password

Programmazione

Supporto per Linguaggi di Programmazione
Monday, 30 May 2011, 16:02
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

c# File non trovato in win2000


Ho scritto un programmino che salva alcune impostazione e indirizzi di file in un file di testo, e le recupera all'occorrenza, diciamo il classico file di impostazione.

per semplificare diciamo che il file è questo
Impostazioni.txt
\\PC1\condivisioneA\pippo.txt

il mio programma apre il file impostzioni.txt, legge la prima riga la mette in una stringa e apre il file pippo.txt.

Ora, il programm fila liscio da XP in su, su windows 2000 da file non trovato ho verificato che all'interno della stringa si tutto corretto...

Chi mi illumina?

Ha cosa importantissima: l'eseguibile del programma è residente in rete e non in locale, se metto il l'eseguibile in locale funziona tutto alla perfezione.

Quindi:
quando eseguo il programma in locale apro il file impostazioni in una cartella condivisa di un altro PC senza problemi.

se il programma è eseguito da una cartella condivisa ciccia!!! non trova il file pippo.txt
    Rispondi Citando Rispondi
Monday, 30 May 2011, 16:54
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Ho trovato qualcosa qui, ma non so se serva al caso tuo:

Quote:
In Windows 2000 per impersonare un utente l'utente corrente deve avere il privilegio SE_TCB_NAME ("act as part of the operating system"), che viene concesso giustamente solo agli utenti amministratori (da Windows XP non è più necessario questo privilegio per impersonare gli utenti); puoi aggirare il problema usando da codice utility come RunAs o connettendoti al servizio RunAs.
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Monday, 30 May 2011, 17:05
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

Mi sa che non fa a caso mio, oppure non ciò capito nulla. altri consigli o delucidazioni?
    Rispondi Citando Rispondi
Monday, 30 May 2011, 17:27
SatRider
 Utente Appassionato
 
L'avatar di  SatRider
 
 Messaggi: 1,382

Secondo me è un problema di percorso, puoi (ri)descrivere tutto specificando bene i nomi che usi in c#, dove (il percorso) risiede l'eseguibile e specificare dove stanno (il percorso) i file?

Suppongo che quando usi "pippo.txt" con win2k lo cerca da una parte, con XP...da un'altra. Prova ad usare SEMPRE percorsi assoluti o, in alternativa, componi tu il percorso assoluto.

Per capire ESATTAMENTE le differenze e il problema basterebbe lanciare procmod di SysInternals, filtrare il tuo eseguibile e vedere cosa fa su XP e cosa fa su Win2k.

SatRider
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 06:45
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

Allora posto le parti incriminate.

il file impostazioni è un file di testo con dentro queste due righe:
\\ciao\doc-cade\FiltroPikeMaga\NewFILTRO_PIK-MAGA.txt
\\ciao\doc-cade\FiltroPikeMaga\DbfOrdini.txt
\\ciao\doc-cade\FiltroPikeMaga\MAGA.TXT


Codice:
string DirectoryDiLavoro = Application.StartupPath;

Codice:
public string CaricaImpostazioni() { string IndirizzoFile = ""; if (File.Exists(DirectoryDiLavoro + "\\Impostazioni.txt")) { StreamReader FileImpos = new StreamReader(DirectoryDiLavoro + "\\Impostazioni.txt"); IndirizzoFile = FileImpos.ReadLine(); textBoxDbfOrdini.Text = FileImpos.ReadLine(); textBoxFileMaga.Text = FileImpos.ReadLine(); FileImpos.Close(); } return IndirizzoFile; }

Quindi in:
IndirizzoFile = \\ciao\doc-cade\FiltroPikeMaga\NewFILTRO_PIK-MAGA.txt
textBoxDbfOrdini.Text = \\ciao\doc-cade\FiltroPikeMaga\DbfOrdini.txt
textBoxFileMaga.Text = \\ciao\doc-cade\FiltroPikeMaga\MAGA.TXT

Andiamo avanti:
Codice:
textBoxIndirizzoFile.Text = IndirizzoFiltro; if (CaricaFileFiltro(IndirizzoFiltro) == false) { MessageBox.Show("File FiltroP&P non trovato o non valido, verificare il path\n" + IndirizzoFiltro); BloccaSblocca(false); } else { BloccaSblocca(true); }

Codice:
public bool CaricaFileFiltro(string IndirizzoFile) { if (!File.Exists(IndirizzoFile)) return false; string Riga = ""; StreamReader FileFiltro = new StreamReader(IndirizzoFile); ...

Quindi carica CaricaFileFiltro mi restituisce false in win2000 mentre da XP in avanti è tutto ok!

Ovviamente come dicevo prima, mi restituisce false soltanto se l'exe si trova in una cartella condivisa e non in locale dove la eseguo.
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 08:06
SatRider
 Utente Appassionato
 
L'avatar di  SatRider
 
 Messaggi: 1,382

Nei due casi, eseguito da unc e da locale, dove sta il file Impostazioni.txt?

Ho il dubbio che in win2k Application.StartupPath non sia l'unc ma un default (C:\windows?).

SatRider
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 08:20
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

il file impostazioni è dove c'è l'exe.
ho provato a stampare il percorso del file prima di aprirlo ed è corretto.
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 08:30
SatRider
 Utente Appassionato
 
L'avatar di  SatRider
 
 Messaggi: 1,382

Usa procmon di Sysinternals per vedere cosa fa quando funziona (da disco locale) e quando non funziona (da share) e confronta i due trace.

SatRider
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 15:43
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

Ho fatto questo:


Codice:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace Test_Win2000_error { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonApri_Click(object sender, EventArgs e) { if (File.Exists(textBoxPath.Text)) { StreamReader ReadFile = new StreamReader(textBoxPath.Text); listBoxErrori.Items.Add(ReadFile.ReadLine()); ReadFile.Close(); } else { listBoxErrori.Items.Add("File non Trovato"); } } private void buttonForza_Click(object sender, EventArgs e) { try { StreamReader ReadFile = new StreamReader(textBoxPath.Text); listBoxErrori.Items.Add(ReadFile.ReadLine()); ReadFile.Close(); } catch (Exception c) { listBoxErrori.Items.Add("Errore:" + c); } } } }

se il programma gira in locale funziona come dovrebbe mentre se metto il programma in una cartella condivisa mi da file non trovato.

Purtroppo non posso installare il programma Sysinternals...

se provo a leggere il file nonostante l'errore mi viene fuori questo:
richiesta di autorizzazione di tipo `System.security.Permissions.FileIOPermission,msco rlib...
    Rispondi Citando Rispondi
Tuesday, 31 May 2011, 23:10
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Guarda un po' se questo può venirti più utile:
Run a .NET program from a mapped drive or shared folder
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Rispondi Invia Nuova Discussione


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 

Thread già visto da:
C0m4nch3, ggigi99, RomeoKnight, palin, BRAVO 2, SatRider, Foxes, ale82x, Neles
Strumenti Discussione Cerca in questa Discussione
Cerca in questa Discussione:

Ricerca Avanzata
Modalità Visualizzazione

top Regole di scrittura
Tu non puoi inserire messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare allegati
Tu non puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Attivo

Se hai problemi, contattaci


Visite Totali Posts: 81.269.325
Tutti gli Orari sono GMT +1. Attualmente sono le 08:09.

iGroup Black
Powered by vBulletin Versione 3.5.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Traduzione italiana a cura di: Enzo-Staff-VbulletinItalia.it
 
2000, 2012 © Visiva Group