Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# buf[0]=1; buf[1]=1; wsize=写入(fd,buf,2); 关闭(fd); 出口(0); }_C#_.net_Firefox_System.data.sqlite - Fatal编程技术网

C# buf[0]=1; buf[1]=1; wsize=写入(fd,buf,2); 关闭(fd); 出口(0); }

C# buf[0]=1; buf[1]=1; wsize=写入(fd,buf,2); 关闭(fd); 出口(0); },c#,.net,firefox,system.data.sqlite,C#,.net,Firefox,System.data.sqlite,我也有同样的问题。之前,我使用Python脚本(与sqlite集成)从cookies.sqlite和perms.sqlite文件获取数据。后者仍然可以正常工作。实际上,所有其他.sqlite文件都是可读的。。。除了cookies.sqlite和places.sqlite。这两个错误都会产生“加密或不是数据库”错误 我没有寻找Python(或sqlite3)的升级,而是为.sqlite文件创建了一个补丁。此C代码将偏移量18和19处的字节从2更改为1。我在Cygwin下的Windows上运行这个,

我也有同样的问题。之前,我使用Python脚本(与sqlite集成)从cookies.sqlite和perms.sqlite文件获取数据。后者仍然可以正常工作。实际上,所有其他.sqlite文件都是可读的。。。除了cookies.sqlite和places.sqlite。这两个错误都会产生“加密或不是数据库”错误

我没有寻找Python(或sqlite3)的升级,而是为.sqlite文件创建了一个补丁。此C代码将偏移量18和19处的字节从2更改为1。我在Cygwin下的Windows上运行这个,但是它应该在Unix/Linux上编译和运行

警告:不要对原始Firefox cookies.sqlite文件执行此操作。 相反,将其复制到临时文件,然后在副本上运行修补程序

// ffpatch.c
// Edits the specified Firefox .sqlite file.
// Changes 0x0202 to 0x0101 at offset 18/19.
// BEFORE
//   0000000   S   Q   L   i   t   e       f   o   r   m   a   t       3  \0
//   0000020 004  \0 002 002  \0   @          \0  \0 005 034  \0  \0  \0   N
// AFTER
//   0000000   S   Q   L   i   t   e       f   o   r   m   a   t       3  \0
//   0000020 004  \0 001 001  \0   @          \0  \0 005 034  \0  \0  \0   N

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#define PROGNAME "ffpatch"
#define MY_OFFSET 18

int main (int argc, char *argv[])
{
  int      fd;
  char     buf[2];
  off_t    offset;
  ssize_t  wsize;

  if (argc != 2)
  {
    fprintf(stderr, "usage: %s sqlite-file\n", PROGNAME);
    exit(1);
  }

  if ((fd = open(argv[1], O_RDWR)) == -1)
  {
    fprintf(stderr, "cannot open %s\n", argv[1]);
    exit(1);
  }

  if ((offset = lseek(fd, MY_OFFSET, SEEK_SET)) != MY_OFFSET)
  {
    fprintf(stderr, "lseek() failed\n");
    exit(1);
  }

  buf[0] = 1;
  buf[1] = 1;
  wsize = write(fd, buf, 2);   

  close(fd);

  exit(0);
}
//ffpatch.c
//编辑指定的Firefox.sqlite文件。
//将偏移量18/19处的0x0202更改为0x0101。
//以前
//0000000 S Q L i t f或m a t 3\0
//0000020 004\0 002 002\0@\0\0 005 034\0\0\0\0 N
//之后
//0000000 S Q L i t f或m a t 3\0
//0000020 004\0 001\0@\0\0 005 034\0\0\0\0 N
#包括
#包括
#包括
#包括
#定义PROGNAME“ffpatch”
#定义我的_偏移量18
int main(int argc,char*argv[])
{
int-fd;
char-buf[2];
偏移量;
ssize_t wsize;
如果(argc!=2)
{
fprintf(stderr,“用法:%s sqlite文件\n”,PROGNAME);
出口(1);
}
如果((fd=open(argv[1],O_RDWR))=-1)
{
fprintf(stderr,“无法打开%s\n”,argv[1]);
出口(1);
}
如果((偏移量=lseek(fd,我的偏移量,搜索集))!=我的偏移量)
{
fprintf(stderr,“lseek()失败\n”);
出口(1);
}
buf[0]=1;
buf[1]=1;
wsize=写入(fd,buf,2);
关闭(fd);
出口(0);
}

您好,非常感谢您的回答

我是这样申请的:

一,。 我在这里下载了.NET 4.0当前ADO.NET连接器的源代码:

也许你必须先用匿名用户名和密码登录网站

二,。 我通过下载安装此ADO.NET连接器获得了sqlite3.dll v.3.7.4的预编译版本: (您也可以使用ADO.NET连接器库替换system.data.sqlite.org中的连接器。 我自己只对sqlite3.dll感兴趣。)

三,。 从system.data.sqlite.org编译源代码后,我将生成的system.data.sqlite.dll和sqlite3.dll复制到我的应用程序输出目录。请注意,这两个DLL都是为x86或x64机器编译的


您好,非常感谢您的回答

我是这样申请的:

一,。 我在这里下载了.NET 4.0当前ADO.NET连接器的源代码:

也许你必须先用匿名用户名和密码登录网站

二,。 我通过下载安装此ADO.NET连接器获得了sqlite3.dll v.3.7.4的预编译版本: (您也可以使用ADO.NET连接器库替换system.data.sqlite.org中的连接器。 我自己只对sqlite3.dll感兴趣。)

三,。 从system.data.sqlite.org编译源代码后,我将生成的system.data.sqlite.dll和sqlite3.dll复制到我的应用程序输出目录。请注意,这两个DLL都是为x86或x64机器编译的


问候

我想我明白你的问题了。您的数据库连接正常。首先,您使用的是哪个版本的
dotnetFramework
?因此,您可以下载并使用
System.Data.SQLite.dll
文件进行引用,然后您的问题可能会得到解决。我想您使用的是较旧的
System.Data.SQLite.dll文件(与您的dot net版本不匹配)。

我想我解决了您的问题。您的数据库连接正常。首先,您使用的是哪个版本的
dotnetFramework
?因此,您可以下载并使用
System.Data.SQLite.dll
文件进行引用,然后您的问题可能会得到解决。我认为您使用的是较旧的
System.Data.SQLite.dll文件(与您的dot net版本不匹配)。

这是正确的。Firefox 4.0使用的WAL日志模式与较旧版本的SQLite不兼容。我在工作中也广泛使用该模式,并在此处拥有自己的最新副本:。我不得不继续我自己的版本,因为我不能等待官方版本-没有ETA。这是正确的。Firefox 4.0使用的WAL日志模式与较旧版本的SQLite不兼容。我在工作中也广泛使用该模式,并在此处拥有自己的最新副本:。我不得不继续我自己的版本,因为我迫不及待地等待官方版本——没有ETA。
// ffpatch.c
// Edits the specified Firefox .sqlite file.
// Changes 0x0202 to 0x0101 at offset 18/19.
// BEFORE
//   0000000   S   Q   L   i   t   e       f   o   r   m   a   t       3  \0
//   0000020 004  \0 002 002  \0   @          \0  \0 005 034  \0  \0  \0   N
// AFTER
//   0000000   S   Q   L   i   t   e       f   o   r   m   a   t       3  \0
//   0000020 004  \0 001 001  \0   @          \0  \0 005 034  \0  \0  \0   N

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#define PROGNAME "ffpatch"
#define MY_OFFSET 18

int main (int argc, char *argv[])
{
  int      fd;
  char     buf[2];
  off_t    offset;
  ssize_t  wsize;

  if (argc != 2)
  {
    fprintf(stderr, "usage: %s sqlite-file\n", PROGNAME);
    exit(1);
  }

  if ((fd = open(argv[1], O_RDWR)) == -1)
  {
    fprintf(stderr, "cannot open %s\n", argv[1]);
    exit(1);
  }

  if ((offset = lseek(fd, MY_OFFSET, SEEK_SET)) != MY_OFFSET)
  {
    fprintf(stderr, "lseek() failed\n");
    exit(1);
  }

  buf[0] = 1;
  buf[1] = 1;
  wsize = write(fd, buf, 2);   

  close(fd);

  exit(0);
}