none
Wie Verzeichnis des Benutzers und nicht ein Unterverzeichnis davon herausfinden? RRS feed

  • Frage

  • Hallo,

    wenn ich Environment.GetFolderPath so aufrufe

        strUserPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

    bekomme ich C:\Users\MarkusS\Documents.

    Ich will aber C:\Users\MarkusS eine Ebene höher mit einer Anweisung bekommen. (Und jetzt nicht Documents per Code aus dem String entfernen.)

    Wie mache ich das?
    Und wie heissen die Unterverzeichnisse der ersten Ebene auf C:\Users eigentlich richtig?
    Das Verzeichnis des Benutzers XYZ?

    Montag, 21. Mai 2012 07:43

Antworten

  • Hallo Markus,

    über

                Dim userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
                ' oder auch
                Dim userProfile = Environment.GetEnvironmentVariable("USERPROFILE")
    
    Man sollte jedoch nicht davon ausgehen, darunter die untergeordneten Verzeichnisse zu finden,
    denn es gibt Möglichkeiten die Verzeichnisse zu verlegen. Auch hat das Benutzerprofil hat sich
    im Laufe der Windows Versionen häufiger gewandelt und seinen Stammplatz gewechselt:

    Siehe User Profile Structure (und Vista/Windows 7 hat weiter nachgelegt).

    Gruß Elmar

    • Als Antwort markiert Markus222 Montag, 21. Mai 2012 09:28
    Montag, 21. Mai 2012 08:11
    Beantworter
  • Hallo Markus,

    wichtiger wäre, welche Framework Version Dein Programm verwendet.
    SpecialFolder.UserProfile (uam.) gibt es erst ab .NET Framework 4.0, bei 3.5 und früher noch nicht,
    siehe http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

    Dort vergleiche die einzelnen Versionen.

    Die Environment Variable gibt es bereits länger (und wird vom Betriebssystem gesetzt).

    Gruß Elmar


    Montag, 21. Mai 2012 10:12
    Beantworter
  • Hallo Markus,

    ne, da hatte ich wohl den falschen Namen in der Zwischenablage :) Die Frage war auf dein Posting bezogen.

    Danke für die VS Infos. Wichtig wäre aber, welchen Projekttyp Du verwendest. Denn wenn UserProfile nicht in der Auflistung enthalten ist, arbeitest Du IMHO nicht in einem normalen VB Winforms/WPF Projekt.

    Bist Du sicher, dass die obige Angabe stimmt? Das .NET Framework in Version 4.5 ist als RTM noch gar nicht verfügbar. Zudem ist deine Visual Studio Installation nicht auf dem aktuellsten Stand. SP 1 und nachfolgende Patches solltest Du dringend mal installieren.

    Und falls Du unter Windows 8 Consumer Preview arbeiten solltest: Da kann es gut sein, dass einiges/vieles nicht funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 21. Mai 2012 10:17
    Moderator

Alle Antworten

  • Hallo Markus,

    über

                Dim userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
                ' oder auch
                Dim userProfile = Environment.GetEnvironmentVariable("USERPROFILE")
    
    Man sollte jedoch nicht davon ausgehen, darunter die untergeordneten Verzeichnisse zu finden,
    denn es gibt Möglichkeiten die Verzeichnisse zu verlegen. Auch hat das Benutzerprofil hat sich
    im Laufe der Windows Versionen häufiger gewandelt und seinen Stammplatz gewechselt:

    Siehe User Profile Structure (und Vista/Windows 7 hat weiter nachgelegt).

    Gruß Elmar

    • Als Antwort markiert Markus222 Montag, 21. Mai 2012 09:28
    Montag, 21. Mai 2012 08:11
    Beantworter
  • Hallo Markus,

    das dürfte dann wohl das hier sein:

    Environment.GetFolderPath( Environment.SpecialFolder.UserProfile )

    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 21. Mai 2012 08:11
    Moderator
  • Hallo Elmar, hallo Stefan,

    Der Wert UserProfile wird bei mir in der Environment.SpecialFolder Auflistung nicht angezeigt. In der VB-Hilfe ist davon jedoch die Rede.
     
    Dim userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
    führt zu
    Error 10 'UserProfile' is not a member of 'System.Environment.SpecialFolder'.    

    Dim userProfile = Environment.GetEnvironmentVariable("USERPROFILE") funktioniert. Danke!

    Habe dann noch folgendes gefunden.

    Dim environmentVariables As IDictionary = Environment.GetEnvironmentVariables()

    Man kann damit schön sehen welche Strings in GetEnvironmentVariable welche Informationen zurückgeben.

    • Bearbeitet Markus222 Montag, 21. Mai 2012 09:27
    Montag, 21. Mai 2012 09:26
  • Hallo Markus,

    welche .NET Version verwendest Du da mit welcher Technologie?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 21. Mai 2012 09:50
    Moderator
  • Hallo Stefan,

    falls die Antwort nicht doch auf eine andere Frage bezogen ist (wegen Hans-J.) so ergibt aufrufen von Help - About Microsoft Visual Studio - Copy Info (neben vielem anderem)

    Microsoft Visual Studio 2010
    Version 10.0.30319.1 RTMRel
    Microsoft .NET Framework
    Version 4.5.50131 RTMRel

    Installed Version: Professional

    Microsoft Visual Basic 2010   01018-532-2002102-70742
    Microsoft Visual Basic 2010

    Montag, 21. Mai 2012 10:06
  • Hallo Markus,

    wichtiger wäre, welche Framework Version Dein Programm verwendet.
    SpecialFolder.UserProfile (uam.) gibt es erst ab .NET Framework 4.0, bei 3.5 und früher noch nicht,
    siehe http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

    Dort vergleiche die einzelnen Versionen.

    Die Environment Variable gibt es bereits länger (und wird vom Betriebssystem gesetzt).

    Gruß Elmar


    Montag, 21. Mai 2012 10:12
    Beantworter
  • Hallo Markus,

    ne, da hatte ich wohl den falschen Namen in der Zwischenablage :) Die Frage war auf dein Posting bezogen.

    Danke für die VS Infos. Wichtig wäre aber, welchen Projekttyp Du verwendest. Denn wenn UserProfile nicht in der Auflistung enthalten ist, arbeitest Du IMHO nicht in einem normalen VB Winforms/WPF Projekt.

    Bist Du sicher, dass die obige Angabe stimmt? Das .NET Framework in Version 4.5 ist als RTM noch gar nicht verfügbar. Zudem ist deine Visual Studio Installation nicht auf dem aktuellsten Stand. SP 1 und nachfolgende Patches solltest Du dringend mal installieren.

    Und falls Du unter Windows 8 Consumer Preview arbeiten solltest: Da kann es gut sein, dass einiges/vieles nicht funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 21. Mai 2012 10:17
    Moderator
  • Hallo Elmar,

    vielen Dank. Das war es.

    Möchte jetzt diese Computerzeitbegrenzung schreiben. Da ich gelesen habe das .Net 3.5 bereits bei Windows 7 standardmässig dabei ist habe ich das als TargetFramework ausgewählt. Bei Änderung auf 4.0 geht das mit der Auflistung. Ist viel schöner und komfortabler als mit dem String.  

    Montag, 21. Mai 2012 12:04
  • Hallo Stefan,

    es sind die Projekttypen Windows Forms Application, Class Library und Windows Service.
    .Net Framework 4.5 wird in About Microssoft Visual Studio oben rechts angezeigt.

    Die wurde mit der Visual Studio 11 Professional Beta mitinstalliert. Ich kann das aber als TargetFramework nur in der Beta selbst auswählen.

    Sehr gefallen hat mir die Benutzeroberfläche in der Beta. Wenn man unter Tools - Options - Environment - General - Color theme - Dark auswählt. 
    Die einfache und doch oder gerade deswegen so wohltuende Erscheinungsweise. Die die Augen beruhigt.

    Verwende Windows 7. Die Windows 8 Consumer Preview habe ich mir mal angeschaut...
    Mit Verlaub, empfand das Ding als Zumutung für Benutzer von Desktop- und Laptop Computern. Viel zu viele Mausbewegungen und Clicks notwendig. Viel zu grosse Schaltflächen. Auf dem Desktop fehlt das Startmenu. Anstatt dem wird man auf diese NoComment...


    Montag, 21. Mai 2012 12:09
  • Stefan Falz schrieb:
    > Zudem ist deine Visual Studio Installation nicht auf dem
    > aktuellsten Stand. SP 1 und nachfolgende Patches solltest Du
    > dringend mal installieren.

    Hab's glatt überlesen. Mach ich. Danke.  (Wie geht Installieren der nachfolgenden Patches?)

    Hatte in der VB-Hilfe zu Environment.SpecialFolder Enumeration nachgesehen. Dort in der Liste ist kein Hinweis auf die Framework Version. Selbst wär ich da nicht drauf gekommen.

    Das eben die .Net Framework Versionen (die SPs und Patches) auch Detailänderungen (hoffen wir Verbesserungen) in Sachen wie diesen enthalten.
    Und nicht nur die "grossen" Features.



    Montag, 21. Mai 2012 13:40