none
Erkennen mit welchem Zugriff eine Datei geöffnet werden kann RRS feed

  • Frage

  • Hallo,

    ich muss eine Datei .txt .log etc. öffnen und auslesen.

    Dabei ist entscheidend, wo diese liegt.  Je nachdem muss ich was machen.

    Konkret.

    •   Datei auf Festplatte dann ToDoA
    •   Datei auf Netzwerk dann ToDoB
    •   Datei auf Netzwerk mit Workgroup "XXXX" dann ToDoC
    •   Datei auf Netzwerk mit Workgroup "XXXX" und in der Domäne "YYY" dann ToDoD

    Welche Ansätze würde sich eignen?

    Danke für Tipps im Voraus und ein schönes Wochenende.

    Gruß, Oliver

    Samstag, 3. März 2012 17:58

Antworten

  • GetDriveType sollte Dir erstmal helfen.

    Mit GetUserNameEx bekommst Du zumindest heraus wie Du angemeldet bist.

    IMHO kann man nicht entscheiden mit welchem Credential ein Zugriff erfolgt.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    • Als Antwort markiert O. Stippe Sonntag, 4. März 2012 16:17
    Samstag, 3. März 2012 20:22
    Moderator

Alle Antworten

  • GetDriveType sollte Dir erstmal helfen.

    Mit GetUserNameEx bekommst Du zumindest heraus wie Du angemeldet bist.

    IMHO kann man nicht entscheiden mit welchem Credential ein Zugriff erfolgt.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    • Als Antwort markiert O. Stippe Sonntag, 4. März 2012 16:17
    Samstag, 3. März 2012 20:22
    Moderator
  • GetDriveType sollte Dir erstmal helfen.

    http://stackoverflow.com/questions/3811052/how-to-get-drives-letters-which-are-available-not-in-use-in-mfc

    Hallo Martin,

    OK guter Tipp, sollte somit weiterkommen.

    for( int zaehler = 65; zaehler<(65+26); zaehler++ ) 
    { 
      str[zaehler-65] = zaehler; // Großbuchstaben A bis Z erzeugen (Zeichen-Code 65 bis 90) 
      int Drive = GetDriveType( str[zaehler-65] + ":" ); // Laufwerk-Typ abfragen 
    
      //Spezialfall Programm befindet sich auf Festplatte 
        char Buffer[260]; 
        GetCurrentDirectory(260,Buffer); 
        if( str[zaehler-65] == Buffer[0] ) Drive = GetDriveType( NULL ); 
        // If lpRootPathName is NULL, the function uses the root of the current directory. 
      //Spezialfall Programm befindet sich auf Festplatte 
    
      s.Format( "Laufwerk %s: %i", str[zaehler-65], Drive ); 
      dc.TextOut( 0, (zaehler-65) * 23, s, strlen(s) ); 
    
      if( Drive == 3 || Drive == 4 ) // 3 Festplatte, 4 Netzlaufwerk 
      { 
        GetDiskFreeSpaceEx( str[zaehler-65] + ":", &m_FreeBytes, &m_TotalBytes, NULL ); //Freier Speicherplatz auf Laufwerk 
        s.Format( "frei: %u MB", m_FreeBytes.QuadPart /(1024*1024) ); 
        dc.TextOut( 200, (zaehler-65) * 23, s, strlen( s ) ); 
        dc.TextOut( 350, (zaehler-65) * 23, " " ); 
      
        if( m_FreeBytes.QuadPart / (1024*1024) >= limit ) 
        { 
          dc.TextOut(350, (zaehler-65) * 23, ">limit" ); 
          m_ctlListBox.AddString( str[zaehler-65] + ":" ); 
        } 
    
      } 
    } // Ende der for-Schleife 
    
    http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel3.htm
    Grüße Oliver

    Sonntag, 4. März 2012 16:16