标签: kernel32

C#EntryPointNotFoundException无法在DLL'kernel32.dll'中找到名为'SetDllDirectory'的入口点

我正在尝试使用kernal32.dll中的几个函数.但是,当我的应用程序尝试调用第一个函数时,它会抛出一个EntryPointNotFoundExceptionUnable to find an entry point named 'SetDllDirectory' in DLL 'kernel32.dll'.

public class MyClass
{
    /// <summary>
    /// Use to interface to kernel32.dll for dynamic loading of similar DLLs.
    /// </summary>
    internal static class UnsafeNativeMethods
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
        internal static extern IntPtr LoadLibrary(string lpFileName);

        [DllImport("kernel32.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
        internal static extern bool SetDllDirectory(string lpPathName);

        [DllImport("kernel32.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
        internal …
Run Code Online (Sandbox Code Playgroud)

c# dll kernel32

3
推荐指数
1
解决办法
5291
查看次数

XP系统上的GetProductInfo

GetProductInfo(API函数)似乎在XP Professional上崩溃,而它在Windows 7旗舰版上完美运行.它的替代品是什么?

windows winapi windows-xp kernel32

3
推荐指数
1
解决办法
1146
查看次数

C# - 可以使用IOCTL

我正在尝试编写一个销售点系统,允许"现金抽屉"附件.手册中提供了打开现金抽屉的代码(使用IOCTL以C++编写).由于我在C#.NET中编码,是否可以在C#中执行类似的操作,或者我是否必须编写一些非托管代码?

我能从C#中获得"\\.\ ADVANSYS"的句柄吗?我需要使用DLLImport吗?

如果有人能指出我正确的方向,我将不胜感激.

// IOCTL Codes
#define GPD_TYPE 56053
#define ADV_OPEN_CTL_CODE CTL_CODE(GPD_TYPE, 0x920, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ADV_STATUS_CTL_CODE CTL_CODE(GPD_TYPE, 0x900, METHOD_BUFFERED, FILE_ANY_ACCESS)
void OpenDrawer(UCHAR uWhichDrawer) // uWhichDrawer = 1 => CD#1, uWhichDrawer = 2 => CD#2
{
    HANDLE hFile;
    BOOL bRet
    UCHAR uDrawer = uWhichDrawer;

    // Open the driver
    hFile = CreateFile(TEXT("\\\\.\\ADVSYS"),
    GENERIC_WRITE | GENERIC_READ,
    FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

    if (m_hFile == INVALID_HANDLE_VALUE)
    {
        AfxMessageBox("Unable to open Cash Drawer Device Driver!");
        return;
    }

    // Turn on the …
Run Code Online (Sandbox Code Playgroud)

c# ioctl handle dllimport kernel32

2
推荐指数
1
解决办法
6468
查看次数

如何从内联汇编程序调用Win32 API函数?

有人请告诉我这个代码有什么问题我只是从kernel32.dll调用Sleep函数有什么问题?我正在使用Visual Studio 2008.任何帮助都将不胜感激.非常感谢你.

__asm
{
    mov eax, 77e2ef66h
    push 9999
    call eax
}
Run Code Online (Sandbox Code Playgroud)

c inline-assembly visual-studio-2008 kernel32

2
推荐指数
1
解决办法
1895
查看次数

win32api - 启用了UAC的符号链接创建问题?

我正在尝试使用CreateSymbolicLinkW()函数(来自Kernel32.dll)来创建符号链接.

在相应的计算机上(Win7 Pro x64 SP1):

  • UAC已启用(=具有本地管理员权限的用户的进程默认情况下未提升)
  • 我已经为所有经过身份验证的用户授予了"创建符号链接"用户权限的分配(通过计算机组策略 - > Windows设置 - >安全性 - >本地策略 - >用户权限分配 - >创建符号链接=经过身份验证的用户)
  • 我已启用所有可能的符号链接评估类型(再次通过组策略设置).(确认"fsutil behavior query SymlinkEvaluation"返回:"启用本地到本地符号链接.启用本地到远程符号链接.启用远程到本地符号链接.启用远程到远程符号链接."

现在的情况是:

  • 当我在UNELEVATED进程中作为NON-ADMIN用户运行CreateSymbolicLinkW()时,它工作(创建符号链接)
  • 当我在ELEVATED进程中作为ADMIN用户运行CreateSymbolicLinkW()时,它工作(创建符号链接)
  • 当我在UNELEVATED(!)进程中作为ADMIN(!)用户运行CreateSymbolicLinkW()时,它不工作

最后一个案例是实际问题.GetLastError返回的错误是:1314(="客户端未保留所需的权限").

为什么在没有升级的进程中管理员用户失败,而它适用于未高效的shell中的任何非管理员用户?

我的代码旨在由任何类型的用户运行,最好是在一个不高的过程中.要求管理员用户提升流程作为一种解决方法是我在任何情况下都要避免的.

使用Windows shell btw中的MKLINK命令也可以重现相同的行为(非升级shell中的admin用户失败,而非升级shell中的所有非管理员用户都失败).

我非常感谢任何想法/建议.提前谢谢了!

编辑:Python 2.7的示例代码:

import ctypes
CreateSymbolicLinkW = ctypes.WinDLL("Kernel32").CreateSymbolicLinkW
CreateSymbolicLinkW(u"c:\\linktest\\testlink.txt", u"c:\\linktest\\testtarget.txt",0)
print(ctypes.WinDLL("Kernel32").GetLastError())
Run Code Online (Sandbox Code Playgroud)

winapi symlink uac kernel32 mklink

2
推荐指数
1
解决办法
829
查看次数

获取kernel32的符号


Symbol Server是在C++/Windows中获取kernel32.dll符号的唯一方法吗?
谢谢:)

c++ windows symbol-server kernel32

1
推荐指数
1
解决办法
1023
查看次数

Windows kernel32.dll 仅程序集绘制像素

我一直在寻找堆栈溢出,但似乎找不到任何东西

Windows 64 位上的 kernel32.dll 中的哪些命令和函数可以在屏幕上绘制单个像素,最好没有 user32.dll 窗口?

windows assembly x86-64 kernel32

1
推荐指数
1
解决办法
160
查看次数

Win32汇编 - 外部函数命名('@'的含义)

正如我所见,extern汇编代码中的WinAPI函数具有类似的名称_ExitProcess@4.

@4部分的含义是什么,以及如何确定之后使用的数字@

我知道这与我们链接的DLL有关,但在很多情况下,不知道在使用后使用的是什么数字@,这会导致许多令人讨厌的undefined reference错误.

assembly winapi nasm ld kernel32

0
推荐指数
1
解决办法
296
查看次数

设置Windows控制台的文本颜色无法正常工作

我正在尝试使用winapi和kernel32条板箱使用Rust更改Windows控制台的前景色。

[dependencies]
winapi = "0.2.8"
kernel32-sys = "0.2.1" 
Run Code Online (Sandbox Code Playgroud)

我存储前景色值的枚举:

#[repr(u16)]
pub enum ForegroundColor {
    RED =  (winapi::FOREGROUND_INTENSITY | winapi::FOREGROUND_RED) as u16,
    CYAN = (winapi::FOREGROUND_INTENSITY | winapi::FOREGROUND_GREEN | winapi::FOREGROUND_BLUE) as u16,
    // ...
}
Run Code Online (Sandbox Code Playgroud)

获取输出句柄的函数:

use winapi;
use winapi::{CONSOLE_SCREEN_BUFFER_INFO, COORD, HANDLE, SMALL_RECT, WORD};
use kernel32;

static mut CONSOLE_OUTPUT_HANDLE: Option<HANDLE> = None;
pub fn get_output_handle() -> HANDLE {
    unsafe {
        if let Some(handle) = CONSOLE_OUTPUT_HANDLE {
            handle_check(handle);
            handle
        } else {
            let handle = kernel32::GetStdHandle(winapi::STD_OUTPUT_HANDLE);
            handle_check(handle);
            CONSOLE_OUTPUT_HANDLE = Some(handle);
            handle
        } …
Run Code Online (Sandbox Code Playgroud)

console winapi colors kernel32 rust

0
推荐指数
1
解决办法
241
查看次数