【发布时间】:2015-08-03 19:52:34
【问题描述】:
使用 Visual Basic 创建符号链接的最简单方法是什么?以下代码是我使用 Win32 API 编写的简单代码,但似乎无法正常工作:
Imports System.Runtime.InteropServices
Public Class SymbolicLinker
Private Enum SymbolicLink
File = 0
Directory = 1
End Enum
<DllImport("kernel32.dll")> _
Private Shared Function CreateSymbolicLink(lpSymlinkFileName As String, lpTargetFileName As String, dwFlags As SymbolicLink) As Boolean
End Function
End Class
让我困惑的是以下 C# 代码可以正常工作:
using System.Runtime.InteropServices;
namespace Testbed_SymbolicLinks
{
class SymbolicLinker
{
[DllImport("kernel32.dll")]
static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, SymbolicLink dwFlags);
enum SymbolicLink
{
File = 0,
Directory = 1
}
}
}
我是否以某种方式错误地将代码从 C# 移植到 VB?
编辑: 我的用例很简单:
Module Module1
Sub Main()
Console.WriteLine("Entering application.")
Try
CreateNewSymbolicLink()
Catch e As Exception
Console.WriteLine("An error occured.")
End Try
Console.ReadKey()
End Sub
Sub CreateNewSymbolicLink()
Console.WriteLine("Enter the name of a valid file: ")
Dim file As String = Console.ReadLine()
Console.WriteLine("Enter the name of a symbolic file: ")
Dim symbol As String = Console.ReadLine()
Dim success As Boolean = SymbolicLinker.CreateSymbolicLink(symbol, file, SymbolicLink.File)
If success Then
Console.WriteLine("Web call was success")
Else
Console.WriteLine("Web call was a failure")
End If
End Sub
End Module
【问题讨论】:
-
不要忘记
CreateSymbolicLink在普通系统上需要提升。 -
请出示 MCVE。我们看不到您如何调用该函数。 “不工作”对我们没有用。您必须准确并提供详细信息。
-
@DavidHeffernan 在这种情况下,我认为很明显“不工作”意味着在调用函数时没有创建符号链接,但如果你必须,我已经添加了我的 MCVE。
-
@JonathanPotter 乔纳森,感谢您的回复。很抱歉这个基本问题,但你能解释一下这是什么意思吗?谢谢。
-
他的意思是你必须以管理员权限运行应用程序。