Visual Studio 的奇怪行为

Visual Studio 的奇怪行为

我注意到 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 启动程序,两个程序都可以顺利启动。

现在一切都清楚了吗?

相关内容