从网站项目调用kernel32.dll



我已经创建了网站项目,在开发时使用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;
        }

我得到了这个错误编号(5=访问被拒绝),但它在其他类型的项目中运行良好,比如(windows窗体、控制台应用程序、asp项目)。

如何解决这个问题?

提前感谢

解决方案已经找到,我们只需要通过将标识属性更改为(本地系统)

来授予应用程序池权限

最新更新