小编Kri*_*sen的帖子

C#File.Exists返回false,文件确实存在

使用VS 15,C#和.Net 4.5.2
计算机位于AD网络上,广告名称为"AD".
AD正常用户权限,AD管理员权限和本地管理员权限会发生此问题.无论程序获得什么权利,都会出现同样的问题.

我们的测试文件是" C:/windows/system32/conhost.exe ".
上面的文件存在,它是非常存在的.我可以用资源管理器看到它.

这是资源管理器中的文件:
在此输入图像描述

这是文件属性:
在此输入图像描述

你可以看到它在那里,对吗?
以下cmd命令检查文件是否存在:

IF EXIST "C:\windows\system32\conhost.exe" (echo does exist) ELSE (echo doesnt exist)
Run Code Online (Sandbox Code Playgroud)

它按照承诺返回" 确实存在 ".

以下C#代码检查文件是否存在:

FileInfo file = new FileInfo("C:/windows/system32/conhost.exe");
MessageBox.Show(file.Exists + "");
Run Code Online (Sandbox Code Playgroud)

返回" False ".

此代码也返回" False ":

MessageBox.Show(File.Exists("C:/windows/system32/conhost.exe") + "");
Run Code Online (Sandbox Code Playgroud)

此代码也找不到它:

foreach (string file in Directory.GetFiles("C:/windows/system32/"))
{
    //conhost is NEVER mentioned, like it doesn't exist
}
Run Code Online (Sandbox Code Playgroud)

此代码也找不到它:

foreach (string file in Directory.EnumerateFiles("C:/windows/system32/"))
{
    //conhost is NEVER mentioned, like it doesn't exist
}
Run Code Online (Sandbox Code Playgroud)

假,假,假:

MessageBox.Show(File.Exists("C:/windows/system32/conhost.exe") + ""); …
Run Code Online (Sandbox Code Playgroud)

c# file file-exists

28
推荐指数
2
解决办法
1万
查看次数

Java ASM 字节码 - 查找属于特定方法调用的所有指令

你好。

我想找到方法调用开始结束之间的指令范围。
我不想简单地更改方法调用所有者/名称/描述。

有了预期的结果,我希望能够做到:

  1. 完全删除一个方法调用
  2. 通过在前面或后面添加新参数来修改方法调用


我一直在尝试不同的技术来实现这一目标:

  1. ASM 分析器(使用 SourceInterpreter)
  2. 循环指令集,向前和向后,通过计算指令计数或计算堆栈高度来尝试定位startend
  3. 通过 StackOverflow 搜索(没有发现导致预期行为的任何内容)


我会给你一些我想要什么的例子,以防这里有任何混淆。
首先,看看我下面的测试代码,然后回到这里。

我希望找到/删除整个方法调用anotherMethod4并将其替换为一个简单的true,从而生成以下代码:

    System.out.println(
        anotherMethod1(
            anotherMethod2("a", "b") ?
                "c" : anotherMethod3("d", "e") ? "f" : "g",
                true ? "j" : "k"
        ) ? "l" : "m"
    );
Run Code Online (Sandbox Code Playgroud)

我希望找到/删除整个方法调用anotherMethod1并将其替换为一个简单的false,从而生成以下代码:

    System.out.println(
        false ? "l" : "m"
    );
Run Code Online (Sandbox Code Playgroud)


我希望删除对 的整个方法调用System.out.println,从而生成以下代码:

    private Main()
    {

    }
Run Code Online (Sandbox Code Playgroud)


这一定是可能的吗?

这是我当前的测试代码:

private Main()
{
    System.out.println(
        anotherMethod1(
            anotherMethod2("a", …
Run Code Online (Sandbox Code Playgroud)

java bytecode java-bytecode-asm

2
推荐指数
1
解决办法
578
查看次数

System.out.print('\ r')不起作用

我的\r工作原因并不奇怪.它不会回到行的开头:

char[] animationChars = new char[] {'|', '/', '-', '\\'};

public Main() {

    for (int i = 0; i < 100; i++) {
        System.out.print("Processing: " + i + "% " + animationChars[i % 4] + '\r');

        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

Processing: 0% |
Processing: 1% /
Processing: 2% -
Processing: 3% \
Processing: 4% |
Processing: 5% /
Processing: 6% -
Processing: 7% \
Processing: 8% |
Processing: 9% …
Run Code Online (Sandbox Code Playgroud)

java printing

1
推荐指数
1
解决办法
4662
查看次数

标签 统计

java ×2

bytecode ×1

c# ×1

file ×1

file-exists ×1

java-bytecode-asm ×1

printing ×1