2
// 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 DocumentsV:D:Access Denied

を使用できる CMD に似た文字列を指定できる方法はあります%USERPROFILE%/My Documentstsclient?

編集:絶対パスEnvironment.ExpandEnvironmentalVariables()に変更するために使用できることがわかりました。%USERPROFILE%\My Documents

string MyDocumentsLocation = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\My Documents");
4

0 に答える 0