Oke, saya sudah memeriksa Environment.SpecialFolder, tapi tidak ada apa-apa di sana untuk ini.
Saya ingin mendapatkan direktori home dari pengguna saat ini di C #. (mis. di c:\documents and settings\user
bawah XP, di c:\users\user
bawah Vista, dan di /home/user
bawah Unix.)
Saya tahu saya dapat membaca variabel lingkungan untuk mengetahui hal ini, tetapi saya ingin melakukan ini dengan cara lintas platform.
Apakah ada cara agar saya dapat melakukan ini dengan .NET (sebaiknya menggunakan mscorlib)?
UPDATE : Oke, ini adalah kode yang akhirnya saya gunakan:
string homePath = (Environment.OSVersion.Platform == PlatformID.Unix ||
Environment.OSVersion.Platform == PlatformID.MacOSX)
? Environment.GetEnvironmentVariable("HOME")
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
Jawaban:
Environment.SpecialFolder.Personal
tidak benar-benar mengembalikan folder utama, ini mengembalikan folder Dokumen Saya . Cara paling aman untuk mendapatkan folder home di Win32 adalah dengan membaca%HOMEDRIVE%%HOMEPATH%
. Membaca variabel lingkungan sebenarnya sangat portabel untuk melakukan (di Unix dan Windows), jadi saya tidak yakin mengapa poster ingin tidak melakukannya.Diedit untuk menambahkan: Untuk lintas platform (Windows / Unix) C #, saya akan membaca
$HOME
tentang Unix dan OSX dan%HOMEDRIVE%%HOMEPATH%
Windows.sumber
Personal is My Documents (atau Dokumen di win7 dan di atasnya).
sumber
Saya yakin apa yang Anda cari adalah:
Untuk referensi, itu sebenarnya terkandung dalam
mscorlib
.sumber
Di DotNetCore 1.1
System.Environment.SpecialFolder
tidak ada. Mungkin ada di 2.0-beta. Sampai saat itu, untuk melakukan ini, Anda dapat menggunakan yang berikut ini:sumber
System.Environment.SpecialFolder
adaJawaban intinya adalah Tidak. Tidak ada metode berbasis Sistem sederhana di .NET untuk mendapatkan direktori Home sehingga kita dapat mengharapkan implementasi di .NET di Windows dan di Mono.
Anda perlu melakukan beberapa deteksi OS dan bercabang ke kode khusus OS.
sumber
Ketika Anda mengatakan cara lintas platform, OS lain apa yang perlu Anda dukung? Anda mungkin perlu melakukan beberapa deteksi OS sederhana untuk memilih metode untuk menemukan direktori home jika Anda menjalankan OS non-Windows.
Situs web ini tampaknya memberikan cara untuk melakukan apa yang Anda butuhkan di Windows.
sumber
Hal ini dapat dilakukan dengan menggunakan
GetEnvironmentVariable
diSystem.IO
:Kemudian menghasilkan di bawah jendela:
C:\\\\Users\\myusername\\myFolder
Perhatikan bahwa jika Anda menggunakan
gagal karena menghasilkan:
\\Users\\myusername\\myFolder
sumber
Saya tidak memiliki mesin untuk mengujinya, tetapi
%HOMESHARE%
mungkin berhasil untuk Anda. Jika tidak, berikut daftar variabel lingkungan yang cukup bagus .sumber