// Set default workspace directory
string initialDirectoryString = @"C:\work\";
// Check if remote session, and get the local drive location
if(System.Windows.Forms.SystemInformation.TerminalServerSession) {
initialDirectoryString = @"\\tsclient\C\work\";
}
もともと上記のコードを書いたとき、C:\
書き込み用のディレクトリを作成できるという印象を受けましたが、私が聞いたところによると、アクセスできる唯一の場所はMy Documents
ディレクトリです。
したがって、次の方法でローカルEnvironment.SpecialFolder
を取得できることがわかっています。
string path = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);
問題は、クライアント マシンからの取得方法です。サーバーからパスを取得して先頭に追加する (およびfromなど\\tsclient\
を削除する) ことを考えましたが、クライアント上のディレクトリが (たとえば、の代わりに) と同じでない場合、試してみると場所に書き込みます。:
C:
My Documents
V:
D:
Access Denied
を使用できる CMD に似た文字列を指定できる方法はあります%USERPROFILE%/My Documents
かtsclient
?
編集:絶対パスEnvironment.ExpandEnvironmentalVariables()
に変更するために使用できることがわかりました。%USERPROFILE%\My Documents
string MyDocumentsLocation = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\My Documents");