我注意到 Visual Studio 中存在一些奇怪的行为:
如果可执行文件 (.exe) 不属于“TrustedInstaller”且位于“系统目录”中(通常为“C:\Windows\System32”),则某些功能将无法正常工作:例如 System.IO.File.Exist(“C:\Windows\System32\MyExecutable.exe”) 返回“False”,并且 Shell(“C:\Windows\System32\MyExecutable.exe”) 会失败。
相反,如果所有者是“TrustedInstaller”,例如“credwiz.exe”,则函数 System.IO.File.Exist("C:\Windows\System32\credwiz.exe") 返回“True”,并且函数“Shell("C:\Windows\System32\credwiz.exe") 运行该程序。
请注意“crediwiz.exe”没有数字签名。
看来你也是这样?
这是 VS 的一个“bug”,还是 Windows Defender 出了问题?
我不明白你的意思。你的意思是如果我使用其他产品,我会得到相同的结果吗?
没试过,不过还是不明白这个意思,这些都是VS应有的功能。
我有以下惯例:
Sub MySub()
booResult = System.IO.File.Exist(X)
...
Shell(X)
...
End Sub
如果 X = “C:\Windows\System32\MyExecutable.exe”,MySub 将不起作用,相反,如果 X = “C:\Windows\System32\credwiz.exe”,MySub 可以正常工作。
但是,如果我从 CMD 或 Powershell 启动程序,两个程序都可以顺利启动。
现在一切都清楚了吗?