Die Datei wird auf SysWOW64 anstatt auf System32 kopiert
Ich muss ein psTool-Dienstprogramm in den System32-Ordner kopieren, wenn meine Anwendung ausgeführt wird.
Ich bin auf 64-Bit-Windows 7 und wann immer ich versuche, die exe in System32-Bit-Ordner zu kopierenFile.Copy
wird die exe immer nach SysWow64 kopiert.
Wenn ich einen Haltepunkt auf destFile setze, wird der Pfad als angezeigtC:\Windows\System32
aber die datei geht da nicht rein (geht zu sysWow64). Ich habe das ausprobiertSpecial Folder
SystemX86
, aber die Datei geht wieder an sysWOW64.
<code>string sourceFile = "C:\bin\Debug\somexe.exe" string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName); File.Copy(sourceFile, destFile, true); </code>
Irgendwelche Vorschläge, was mir hier fehlt?
BEARBEITEN
Wie in der Antwort unten ausgeführt, findet eine Dateisystemumleitung statt. Ich entwickle die App mit den Standardeinstellungen von Visual Studio für eine Konsolenanwendung auf einem 64-Bit-Betriebssystem. Ich bin nicht sicher, welche Einstellungen / Schalter beim Kompilieren beibehalten werden müssen, damit die Anwendung sowohl auf 32-Bit- als auch auf 64-Bit-Betriebssystemen funktioniert.
Grundsätzlich sollte es nur das Kopieren der Datei einstellenSystem32
Nur unabhängig davon, um welches Bit-Betriebssystem es sich handelt.
Später im Programm muss ich über die Befehlszeile auf das Dienstprogramm psTools zugreifen, das nicht verfügbar ist, wenn ich es in SysWOW64 platziere. Wenn ich eine Änderung vornehme, um die 32-Bit-cmd.exe von SysWOW64 zu verwenden, ist dies wiederum eine plattformspezifische 64-Bit-Datei, für die ich mich nicht entscheiden möchte.
Gibt es eine Lösung, mit der die App problemlos sowohl auf 32-Bit- als auch auf 64-Bit-Systemen ausgeführt werden kann? Muss ich den Code ändern (wie?) Oder müssen einige Eigenschaften dieses Konsolenanwendungsprojekts geändert werden (welche Eigenschaften)?