No.
A virtual directory is a web folder mapped to a physical location that is outside the physical server root path. For example, if you have content at D:\files and your web site root is at C:\inetpub\wwwroot, you could create a virtual directory named "files" and map it to D:\files which would then allow you to browse to http://yourserver/files, even though C:\inetpub\wwwroot\files doesn't actually exist.
When you say a root directory, I think you mean a directory set as an application - thereby making it the root folder of your application scope. IIRC, ASP.NET uses "~" to refer to your application root.
How are you constructing the links that are not behaving as expected?