Tôi đang cố sử dụng hàm API win32 CreateProcessWithTokenW()
để bắt đầu quy trình mới với mã thông báo. Vấn đề là tôi khá mới với API win32 và tôi không có ý tưởng làm thế nào để sử dụng các chức năng đúng, và mà cấu trúc vv đó là cần thiết. Ai đó có thể cung cấp cho tôi một ví dụ về cách sử dụng đúng chức năng trong C#?CreateProcessWithTokenW - Ví dụ về cách sử dụng trong C#
Trả lời
Đây là mã không được quản lý, do đó bạn cần phải sử dụng P/Invoke (Platform Invoke), đây là chữ ký chức năng cho CreateProcessWithTokenW()
:
[DllImport("advapi32", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool CreateProcessWithTokenW(
IntPtr hToken,
LogonFlags dwLogonFlags,
string lpApplicationName,
string lpCommandLine,
CreationFlags dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
[In] ref STARTUPINFO lpStartupInfo,
out PROCESS_INFORMATION lpProcessInformation);
Bạn có thể sử dụng một enum như thế này để vượt qua trong các LogonFlags
param (để giữ cho cảm giác .net :)):
public enum LogonFlags
{
WithProfile = 1,
NetCredentialsOnly
}
đây là enum cho CreationFlags
sau khi tài liệu có sẵn here:
public enum CreationFlags
{
DefaultErrorMode = 0x04000000,
NewConsole = 0x00000010,
NewProcessGroup = 0x00000200,
SeparateWOWVDM = 0x00000800,
Suspended = 0x00000004,
UnicodeEnvironment = 0x00000400,
ExtendedStartupInfoPresent = 0x00080000
}
Để biết thêm thông tin, hãy xem hàm này trên p/invoke.net: http://www.pinvoke.net/default.aspx/Structures/CreateProcessWithTokenW.html –
@ sẽ cảm ơn bạn rất nhiều, bài học kinh nghiệm –
@DavidHeffernan: NP, cảm ơn vì đã quan tâm! – Will
- 1. Ví dụ về cách sử dụng TLoginCredentialService
- 2. Ví dụ về cách sử dụng SetupDiGetDeviceProperty
- 3. Ví dụ về AES sử dụng Crypto ++
- 4. Ví dụ về AIDL sử dụng
- 5. Cần ví dụ về C++ sử dụng vector
- 6. Ví dụ tốt về sử dụng libpurple?
- 7. Ví dụ về việc sử dụng Generics.Collections.TObjectDictionary
- 8. Ví dụ về Liên minh trong C
- 9. Ví dụ về sử dụng cây Judy
- 10. Có ví dụ SIMPLE về Cách sử dụng buckminster
- 11. Ví dụ về Winsock?
- 12. Ví dụ về việc sử dụng LibSVM trong java
- 13. Ví dụ về tạo UUID bằng cách sử dụng Boost trong C++
- 14. Ví dụ về cách sử dụng Generics trong .Net (C#/VB.NET)
- 15. Ví dụ về việc sử dụng AdditionalMetadata trong MVC 3
- 16. Ví dụ về D.ccurl
- 17. Ví dụ về pysmb
- 18. Ví dụ về ứng dụng .net sử dụng Amazon SQS
- 19. ví dụ về ứng dụng sử dụng vaadin
- 20. Ví dụ về JGraphT
- 21. Ví dụ và mẹo về Crypto API của Window C/C++ Ví dụ và mẹo
- 22. _CrtCheckMẫu sử dụng ví dụ
- 23. Ví dụ về "hiện đại C++" trong hành động?
- 24. Ví dụ sử dụng BLOB trong SQLAlchemy
- 25. ví dụ về việc sử dụng scala.collection.immutable.Set từ java
- 26. Ví dụ về thử nghiệm đơn vị trong C#?
- 27. Ví dụ đầy đủ về việc sử dụng gói pySerial
- 28. Ví dụ về mã hóa tệp BouncyCastle PGP trong C#
- 29. Ví dụ hữu ích nhất về sử dụng dired (Emacs)
- 30. Ví dụ về MultiSelectListPreference
Bạn muốn nhận mã thông báo từ đâu? Chính xác thì điều gì đang dẫn bạn đến chức năng này? –
Tôi đoán bạn đang cố gắng làm một cái gì đó giống như những gì được mô tả ở đây: http://blogs.msdn.com/b/winsdk/archive/2009/07/14/launching-an-interactive-process-from-windows -service-in-windows-vista-and-later.aspx –