Skip to content
Snippets Groups Projects
Commit be7b75b9 authored by Dmitry Shamrikov's avatar Dmitry Shamrikov
Browse files

EnvironmentVariable

parent d07e4d51
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@ public class Main {
// System.out.println(i);
//if (true) return;
ShellLink link = new ShellLink("testlink.lnk");
ShellLink link = new ShellLink("testlink4.lnk");
//link.setName("Test name");
Filetime ft = link.getHeader().getWriteTime();
System.out.println(String.format("%d:%d:%d %d.%d.%d", ft.get(GregorianCalendar.HOUR_OF_DAY), ft.get(GregorianCalendar.MINUTE), ft.get(GregorianCalendar.SECOND),
......
......@@ -16,6 +16,7 @@ import java.util.HashMap;
import mslinks.data.LinkFlags;
import mslinks.extra.ConsoleData;
import mslinks.extra.ConsoleFEData;
import mslinks.extra.EnvironmentVariable;
import mslinks.extra.Tracker;
import mslinks.extra.VistaIDList;
......@@ -25,6 +26,7 @@ public class ShellLink {
put(ConsoleFEData.signature, ConsoleFEData.class);
put(Tracker.signature, Tracker.class);
put(VistaIDList.signature, VistaIDList.class);
put(EnvironmentVariable.signature, EnvironmentVariable.class);
}};
......@@ -68,7 +70,7 @@ public class ShellLink {
cmdArgs = data.readUnicodeString();
if (lf.hasIconLocation())
iconLocation = data.readUnicodeString();
while (true) {
int size = (int)data.read4bytes();
if (size < 4) break;
......
package mslinks.extra;
import io.ByteReader;
import io.ByteWriter;
import java.io.IOException;
import mslinks.Serializable;
import mslinks.ShellLinkException;
public class EnvironmentVariable implements Serializable {
public static final int signature = 0xA0000001;
public static final int size = 0x314;
public static String variable;
public EnvironmentVariable(ByteReader br, int sz) throws ShellLinkException, IOException {
if (sz != size)
throw new ShellLinkException();
int pos = br.getPosition();
variable = br.readString(260);
br.seek(pos + 260 - br.getPosition());
pos = br.getPosition();
variable = br.readUnicodeString(260);
br.seek(pos + 520 - br.getPosition());
}
@Override
public void serialize(ByteWriter bw) throws IOException {
bw.write4bytes(size);
bw.write4bytes(signature);
byte[] b = variable.getBytes();
bw.writeBytes(b);
for (int i=0; i<260-b.length; i++)
bw.write(0);
for (int i=0; i<variable.length(); i++)
bw.write2bytes(variable.charAt(i));
for (int i=0; i<260-variable.length(); i++)
bw.write2bytes(0);
}
public String getVariable() { return variable; }
public EnvironmentVariable setVariable(String s) { variable = s; return this; }
}
......@@ -56,9 +56,10 @@ public class Tracker implements Serializable {
}
public String getNetbiosName() { return netbios; }
public void setNetbiosName(String s) throws ShellLinkException {
public Tracker setNetbiosName(String s) throws ShellLinkException {
if (s.length() > 16)
throw new ShellLinkException("netbios name length must be <= 16");
netbios = s;
return this;
}
}
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment