从网站项目调用kernel32.dll

时间:2013-11-19 10:37:02

标签: c# asp.net iis web

我创建了网站项目,并在开发时使用IIS版本6作为Web服务器。当我尝试调试此方法(createfile)时,请从USB读取。

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);

const uint OPEN_EXISTING = 3;
        const uint GENERIC_WRITE = (0x40000000);
        const uint FSCTL_LOCK_VOLUME = 0x00090018;
        const uint FSCTL_UNLOCK_VOLUME = 0x0009001c;
        const uint FSCTL_DISMOUNT_VOLUME = 0x00090020;

        bool success = false;
        int intOut;
        string deviceId = @"\\.\H:";
        long DiskSize = 2056320000;

        SafeFileHandle diskHandle = CreateFile(deviceId, GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
        if (diskHandle.IsInvalid)
        {
            //Console.WriteLine(deviceId + " open error.");

            Debug.WriteLine(Marshal.GetLastWin32Error());
            return 0;
        }

我得到这个错误num(5 =访问被拒绝),但它在其他类型的项目中工作正常,例如(windows窗体,控制台应用程序,asp项目)。

如何解决这个问题?

提前谢谢

1 个答案:

答案 0 :(得分:0)

已找到解决方案,我们只需要通过将identity属性更改为(Local system)来为应用程序池授予权限