___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert.
___ tag123windows7 ___ Wird für Fragen zur Programmierung mit oder für Windows 7, einer früheren Version von Microsoft Windows, verwendet. Allgemeine Software- oder Fehlerbehebungsfragen, die nicht direkt mit der Programmierung zusammenhängen, sind nicht im Thema und sollten auf Super User veröffentlicht werden
___ answer7403773 ___
tl; dr: Das Verhalten ist von Entwurf und wird nur angezeigt, wenn Sie eine Assembly ausführen, die für x86-CPUs auf einem x64-Betriebssystem kompiliert wurde
Längere Version:
%code% greift auf die 32-Bit-Struktur der Windows-Registrierung zu.
Der tatsächliche Pfad zum Ordner wird in der 64-Bit-Struktur gespeichert.
Das Problem wurde an das Windows-Team weitergeleitet und möglicherweise in einer zukünftigen Windows-Version behoben.
Weitere Informationen finden Sie unter der Microsoft Connect-Bericht
Problemumgehung
Erstellen Sie eine Konsolenanwendung mit dem folgenden Code und kompilieren Sie sie für ANY CPU
%Vor%
Rufen Sie es dann von Ihrer Hauptanwendung aus:
%Vor%
Dies startet die ausführbare Datei ANY CPU , die nur den gewünschten Pfad zur Standardausgabe ausgibt. Die Ausgabe wird dann in der Hauptanwendung gelesen und Sie erhalten den tatsächlichen Pfad.
___ tag123net40 ___ Version 4.0 von .NET Framework. Verwenden Sie für Fragen speziell zu .NET Framework 4.0. Bei Fragen zu .NET Framework verwenden Sie im Allgemeinen das .net-Tag.
___ tag123winapi ___ Die Windows-API (früher als Win32-API bezeichnet) ist der Kernsatz von Anwendungsprogrammierschnittstellen, die für die Microsoft Windows-Betriebssysteme verfügbar sind. Mit diesem Tag können Sie Fragen zur Entwicklung nativer Windows-Anwendungen mit der Windows-API beantworten.
___ tag123Konfigurierte Ordner ___ Unter Microsoft Windows sind bekannte Ordner Konstanten, die Ordner mit einer besonderen Bedeutung darstellen. Beispiele: Desktop, Programmdateien, Systemsteuerung, Favoriten, ...
Ab Windows Vista ersetzt "Bekannte Ordner" die Funktion "Spezielle Ordner" (CSIDL).
___ qstnhdr ___ SHGetKnownFolderPath / Environment.GetFolderPath () gibt einen falschen Wert für öffentliche Dokumente zurück
___ qstntxt ___
Beim Versuch, das Verzeichnis %code% aufzulösen, ist ein seltsamer Fehler aufgetreten.
Es wird weiterhin in das falsche Verzeichnis aufgelöst, nachdem das CommonDocuments-Verzeichnis mithilfe des Windows-Explorers an den neuen Speicherort umgeleitet / verschoben wurde (Eigenschaften -> Pfad aus dem Kontextmenü).
Ein minimaler funktionierender Code wäre:
%Vor%
Erwartetes Verhalten:
Ausgabe ist %code%
Tatsächliches Verhalten:
Ausgabe ist %code%
Keine; P / Invoke == & gt; C: \ Benutzer \ Öffentliche \ Dokumente
DONT_VERFIY, ALIAS_ONLY; P / Invoke == & gt;
NOT_PARENT_RELATIVE, DEFAULT_PATH; P / Invoke == & gt; C: \ Benutzer \ Öffentlich \ Dokumente
Der korrekte Wert wird in der Windows-Registrierung (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shellordner \ Gemeinsame Dokumente) gespeichert, aber von %code% (oder %code% )
Betriebssystem: Windows 7 Professional x64
.NET Framework v4.0.30319
Die Anwendung wurde für die x86-CPU
kompiliert
Was ich bisher versucht habe:
- meine Anwendung neu starten
- Neustart des Computers
- Aufruf von %code%
- direkte Aufrufe an Win32-API SHGetKnownFolderPath
EDIT 2
Schritte zum Reproduzieren:
- deaktivieren Sie die Benutzerkontensteuerung auf Ihrem Computer [und starten Sie sie neu!]
- gehe zu C: \ Benutzer \ Öffentlich \
- Klicken Sie mit der rechten Maustaste auf den Ordner "Öffentliche Dokumente" und wählen Sie
%code%
- Wählen Sie die Registerkarte "Pfad"
- klicken Sie auf "Move ..." und wählen Sie einen (neuen) Ordner auf dem Laufwerk %code% namens %code%
- klicken Sie auf "Übernehmen"
- Akzeptieren, um alle Dateien an den neuen Speicherort zu verschieben, starten Sie das Minimale
Anwendung oben
___