import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
/**
* 获得快捷方式指向的路径
* @author shk
*
*/
public class LnkParser {
public static void main(String[] args) throws Exception {
new LnkParser(new File("C://temps//config.text.lnk"));
}
public LnkParser(File f) throws Exception {
parse(f);
}
private boolean is_dir;
public boolean isDirectory() {
return is_dir;
}
private String real_file;
public String getRealFilename() {
return real_file;
}
private void parse(File f) throws Exception {
// read the entire file into a byte buffer
FileInputStream fin = new FileInputStream(f);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buff = new byte[256];
while (true) {
int n = fin.read(buff);
if (n == -1) {
break;
}
bout.write(buff, 0, n);
}
fin.close();
byte[] link = bout.toByteArray();
// get the flags byte
byte flags = link[0x14];
// get the file attributes byte
final int file_atts_offset = 0x18;
byte file_atts = link[file_atts_offset];
byte is_dir_mask = (byte) 0x10;
if ((file_atts & is_dir_mask) > 0) {
is_dir = true;
} else {
is_dir = false;
}
// if the shell settings are present, skip them
final int shell_offset = 0x4c;
final byte has_shell_mask = (byte) 0x01;
int shell_len = 0;
if ((flags & has_shell_mask) > 0) {
// the plus 2 accounts for the length marker itself
shell_len = bytes2short(link, shell_offset) + 2;
}
// get to the file settings
int file_start = 0x4c + shell_len;
// get the local volume and local system values
final int basename_offset_offset = 0x10;
final int finalname_offset_offset = 0x18;
int basename_offset = link[file_start + basename_offset_offset]
+ file_start;
int finalname_offset = link[file_start + finalname_offset_offset]
+ file_start;
String basename = getNullDelimitedString(link, basename_offset);
String finalname = getNullDelimitedString(link, finalname_offset);
real_file = basename + finalname;
System.out.println("快捷方式指向的文件路径为:"+real_file);
}
private static String getNullDelimitedString(byte[] bytes, int off) {
int len = 0;
// count bytes until the null character (0)
while (true) {
if (bytes[off + len] == 0) {
break;
}
len++;
}
return new String(bytes, off, len);
}
/*
* convert two bytes into a short note, this is little endian because it's
* for an Intel only OS.
*/
private static int bytes2short(byte[] bytes, int off) {
int n = 0;
for (int i = start, k = start + len % 5; i < k; i++) {
n += (bys[i] & 0xff) << (i * (8));
}
return n;
}
分享到:
相关推荐
3. **设置目标和工作目录**:使用`setPath()`方法指定快捷方式所指向的程序路径,例如Chrome的可执行文件路径。同时,用`setWorkingDirectory()`设置程序的工作目录。 4. **设置快捷方式属性**:可以使用`set...
这里的`"原始目标路径"`是快捷方式所指向的实际文件或程序的位置。 3. 设置快捷方式的其他属性。除了基本的链接目标,还可以设置快捷方式的图标、工作目录、描述等。例如: ```java shellLink.setArguments(...
然而,获取快捷方式的目标路径在Java标准库中并不直接支持,通常需要使用操作系统特定的API,这可能涉及使用JNI(Java Native Interface)或者第三方库如JNA(Java Native Access)来实现。 总结来说,快捷方式工具...
3. 定义JNI方法签名,并在Java中调用对应的C++函数,传入必要的参数,如快捷方式的目标路径和工作目录。 4. C++函数调用Windows API,创建快捷方式并保存到特定位置。 例如,C++代码可能包含以下函数: ```cpp ...
2. **快捷方式的读取**:学习如何获取快捷方式文件的信息,如目标位置、创建日期等。 3. **快捷方式的修改**:掌握如何更新已存在的快捷方式,如改变其指向的程序或文件。 4. **快捷方式的删除**:理解如何在用户...
1. **获取目标路径**:首先,你需要知道要创建快捷方式的程序或文件的实际位置。这通常是一个文件路径,例如"C:\Program Files\MyApp.exe"。 2. **创建快捷方式对象**:在编程中,你可以使用特定的API函数或库来...
首先,需要创建一个指向`javaw.exe`的快捷方式。这个文件通常位于Java安装目录下的`bin`文件夹中。例如,如果Java安装在默认位置,则路径为`C:\Program Files\Java\jre1.8.0_XXX\bin\javaw.exe`(其中`XXX`代表具体...
快捷方式是一种指针,它指向一个程序、文件或者文件夹的原始位置,使得用户可以通过这个快捷方式快速访问目标对象,而无需浏览到其实际路径。在本实例068中,我们探讨的商业源码正是关于创建快捷方式的实现。 创建...
`JAVA_HOME`变量指向Java安装目录,而`PATH`变量则包含Java可执行文件(如`java.exe`、`javac.exe`)的路径,使得系统可以从任何目录下执行这些命令。 ### 临时配置环境变量的方法 #### 1. Windows系统 在Windows...
总的来说,"windows java环境一键配置.zip" 提供了一种方便快捷的方式来配置Windows上的Java开发环境,减少了手动设置环境变量的繁琐步骤,尤其适合新手和追求效率的开发者。不过,理解这些基本配置知识仍然是每个...
在4.12版本之后,SonarQube要求用户明确指定`sonar.java.binaries`属性,以便提供编译后的类文件路径。如果没有正确设置这个属性,分析过程会失败,并显示错误消息:“Please provide compiled classes of your ...
2. 创建`JShortcut`对象,传入快捷方式的目标路径,即你的Java应用程序的可执行文件路径。 3. 设置快捷方式的属性,如工作目录、图标、快捷键等。 4. 调用`create()`方法,完成快捷方式的创建。 示例代码如下: ``...
本示例“安卓Launcher桌面相关-android生成桌面快捷方式shortcutdemo.rar”聚焦于如何在Android应用程序中创建桌面快捷方式,方便用户快速访问特定的功能或活动。以下是对这个主题的详细阐述: 一、Android快捷方式...
按照向导的提示,接受许可协议,选择安装路径(默认路径通常是合适的),并决定是否创建桌面快捷方式。在某些情况下,您可能还需要配置环境变量,如JAVA_HOME,这将指向JDK的安装目录。在系统变量中添加JAVA_HOME,...
5. **注意事项**:虽然自动设置工具可以方便快捷地配置环境变量,但仍然需要了解基本的环境变量设置原理,因为有时可能需要自定义配置,比如处理多个Java版本共存的情况,或者为特定项目调整ClassPath。 6. **多...
这些变量包括JAVA_HOME,它指向JDK的安装目录,PATH使得系统命令行能够执行Java相关命令,而CLASSPATH则是Java类加载器查找类文件的路径。通过这种方式,工具确保了你的系统能够正确识别和运行Java程序。 对于...
"访问零度软件园获取更多资源.url"是一个快捷方式文件,指向一个网站www.05sun.com,该网站可能提供更多的Java开发资源,如教程、示例代码、工具或者其他版本的JDK下载。开发者可以通过这个链接找到额外的支持和学习...
` (注意,%JAVA_HOME%是引用JAVA_HOME的快捷方式)。 - Linux/macOS: - 在`~/.bashrc`或`~/.bash_profile`中添加`export PATH=$JAVA_HOME/bin:$PATH`。 3. **CLASSPATH**: `CLASSPATH`环境变量用于指定Java...
对于Java 7解压版,用户只需将压缩包解压到指定位置,然后设置环境变量`JAVA_HOME`指向JDK的安装目录,`PATH`添加`%JAVA_HOME%\bin`,确保系统可以在任何位置执行Java命令。 5. **使用注意事项** - 避免与其他...
最后,`使用帮助-35oe.com.txt`可能是提供给开发者关于如何使用这个源码的指南,而`.url`文件通常是一个快捷方式,指向了像`狼族部落源代码.url`这样的资源或网站,可能是开发者的参考资料或者示例代码库。...